日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

list index out of bounds_python3基础03列表(list)和元组(tuple)

發布時間:2023/12/19 python 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 list index out of bounds_python3基础03列表(list)和元组(tuple) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

"pythonic生物人"的第35篇分享。


原創不易,點個“贊“或"在看"鼓勵下唄!

摘要

本文梳理python序列容器中的列表和元組數據結構的基礎知識。

目錄

1、列表(list)
  • 列表特點

  • 列表創建

  • 列表操作

  • 相加(+)

  • 相乘(*)

  • 索引(index)

  • 切片

  • 列表元素修改

  • 成員資格

  • 列表推導式

  • 列表方法

  • append

  • clear

  • copy

  • count

  • extend

  • index

  • inseret

  • pop

  • remove

  • reverse

  • reversed函數

  • sort

  • sorted函數

2、元組(tuple)
  • 元組特點

  • 元組創建

  • 元組操作

  • 元組方法


正文開始啦


先簡單說一下python容器變量兩個概念。

  • python容器

容器(container)是python支持的一種數據結構基本概念,是可包含其他對象的對象(python中一切皆為對象,例如,我正在寫的博文,使用的python,鍵盤等);容器都包含了一個__contains__ 方法(dir函數可查看);

三種主要的python容器:

  • 序列,如列表,元組和字符串,在序列中,每個元素都有編號;
  • 映射,如字典,在映射中,每個元素都有名稱,也叫鍵;
  • 集合(set)。
  • python變量(variable)

表示(或指向)特定值的名稱;

變量名稱只能由字母、數字和下劃線(_)構成,開頭不能為數字;

變量賦值及使用,如下:

In [2]: x=3#變量x賦值In [3]: print(x)#表達式中使用變量3

1、列表(list)

  • 列表特點

使用中括號包圍;列表中可以存放任意類型和任意個數的元素(字符串,數字,列表,字典等等);列表是一種序列容器,具有序列序列通用的方法和函數。
  • 列表創建

In [5]: ["a","b","c",1]#使用[]創建Out[5]: ['a', 'b', 'c', 1]IIn [7]: list("124")#使用list函數創建Out[7]: ['1', '2', '4']In [8]: [i for i in "Hello" ]#列表推導式創建Out[8]: ['H', 'e', 'l', 'l', 'o']
  • 列表操作

  • 相加(+)

In [9]: ['1', '2', '4'] + ['H', 'e', 'l', 'l', 'o']Out[9]: ['1', '2', '4', 'H', 'e', 'l', 'l', 'o']
  • 相乘(*)

In [11]: ['1', '2', '4'] * 2Out[11]: ['1', '2', '4', '1', '2', '4']
  • 索引(index)

In [13]: alist = ['1', '2', '4', ['a', 'b']]In [14]: alistOut[14]: ['1', '2', '4', ['a', 'b']]In [15]: alist[0]Out[15]: '1'In [16]: alist[-1]Out[16]: ['a', 'b']In [17]: alist[-1][0]#嵌套列表索引Out[17]: 'a'
  • 切片

類似上一節字符串切片操作,略。
  • 列表元素修改

#列表中元素可修改,可通過索引或者切片修改。In [18]: alist[-1] = ['c', 'a']#索引修改In [19]: alistOut[19]: ['1', '2', '4', ['c', 'a']]In [31]: alist[1:3] = []#切片修改In [32]: alistOut[32]: ['1', ['c', 'a']]
  • 成員資格

判斷某個元素是否存在列表中,存在返回True,否則返回False。In [210]: aOut[210]: ['a111', 'a1', 'a']In [211]: "a" in aOut[211]: TrueIn [212]: "a2" in aOut[212]: False
  • 列表推導式

此處簡單介紹,后續詳解。

In [210]: aOut[210]: ['a111', 'a1', 'a']In [213]: [i[0] for i in a]Out[213]: ['a', 'a', 'a']
  • 列表方法

dir函數列出列表所有函數和方法,紅色為函數,藍色為方法。

In [36]: print(dir(list))

['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__','append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

  • append

列表末尾添加一個元素。

In [2]: alist = ['1', '2', '4', ['c', 'a']]In [3]: alist.append("hah")In [4]: alistOut[4]: ['1', '2', '4', ['c', 'a'], 'hah']
  • clear

將列表中元素清空。

In [4]: alistOut[4]: ['1', '2', '4', ['c', 'a'], 'hah']In [6]: alist.clear()In [7]: alistOut[7]: []
  • copy

復制列表,得到一個副本,等價于list[:],list(list)。

In [130]: a = [1,2,3]In [131]: b = a.copy()In [132]: bOut[132]: [1, 2, 3]In [133]: b[0] = "hah"#修改b列表In [134]: bOut[134]: ['hah', 2, 3]In [135]: a#b列表修改不會影響a列表Out[135]: [1, 2, 3]
  • count

計算某個元素在列表中出現了多少次。

In [138]: aOut[138]: [1, 2, 3]In [139]: a.count(1)#1在a中出現1次Out[139]: 1In [140]: a.count(4)#4不在a中返回0次Out[140]: 0
  • extend

使用一個列表擴展另外一個列表,此處要區別于前面提到的列表相加(效率和可讀性不及extend)。

#列表相加In [145]: a = [1, 2, 3]In [146]: a + bOut[146]: [1, 2, 3, 4, 5, 6]In [147]: a#列表相加未修改a列表Out[147]: [1, 2, 3]#extendIn [141]: aOut[141]: [1, 2, 3]In [142]: b = [4, 5, 6]In [143]: a.extend(b)In [144]: a#extend修改了a列表Out[144]: [1, 2, 3, 4, 5, 6]
  • index

查找某個元素第一次出現在列表中的索引號。In [150]: a = [1, 2, 3, 3]In [151]: a.index(1)Out[151]: 0In [152]: a.index(3)#返回3第一次出現的索引2Out[152]: 2
  • inseret

在列表指定位置添加某個新元素,此處要區別于上文的切片或者索引修改列表的方法(方法效率和可讀性不及insert)。?

#切片或者索引修改法In [160]: a = [1, 2, 3, 3]In [161]: a[1:1] = ["haha"]In [162]: aOut[162]: [1, 'haha', 2, 3, 3]#insert方法In [153]: aOut[153]: [1, 2, 3, 3]In [154]: a.insert(1, "haha")In [155]: aOut[155]: [1, 'haha', 2, 3, 3]
  • pop

從列表中刪除一個元素,默認刪除最后一個元素,可指定索引號刪除對應元素,并返回這一元素。pop是唯一既修改列表又返回一個非None值的列表方法。In [163]: aOut[163]: [1, 'haha', 2, 3, 3]In [164]: a.pop()Out[164]: 3In [165]: aOut[165]: [1, 'haha', 2, 3]In [167]: a.pop(1)#刪除索引為1的元素,并返回Out[167]: 'haha'In [168]: aOut[168]: [1, 2, 3]
  • remove

刪除列表中第一次出現的元素。In [170]: a = [1, 2, 3, 3]In [171]: a.remove(3)In [172]: aOut[172]: [1, 2, 3]In [173]: a.remove(4)#元素不存在是,報錯并退出執行---------------------------------------------------------------------------ValueError Traceback (most recent call last) in ----> 1 a.remove(4)ValueError: list.remove(x): x not in list
  • reverse

將列表中元素順序顛倒。

In [183]: aOut[183]: [2, 1]In [184]: a.reverse()In [185]: aOut[185]: [1, 2]
  • reversed函數

該函數可以達到reverse相同的目的。

In [186]: reversed(a)#返回一個迭代器Out[186]: In [187]: list(reversed(a))Out[187]: [2, 1]
  • sort

對列表就地排序(默認低到高排序,即升序),而不是返回排序后的列表的副本。?

In [191]: a = [1, 3, 5, 3, 0]In [192]: a.sort()In [193]: a#就地修改了Out[193]: [0, 1, 3, 3, 5]In [194]: b = a.sort()#不是返回排序后的a列表的副本,所以b為NoneIn [195]: b#sort的key和reverse參數#key后的函數自己可以自定義,即自己可以設定排序規則。key默認為None。In [204]: a = ["a111", "a1", "a"]In [207]: a.sort(key=len, reverse=True)#len按元素長度排序,reverse=True指定按從大到小排序In [208]: aOut[208]: ['a111', 'a1', 'a']
  • sorted函數

返回被列表排序后的一個副本,默認從低到高排序,要區別于sort方法。

In [199]: a = [1, 3, 5, 3, 0]In [200]: b = sorted(a)In [201]: bOut[201]: [0, 1, 3, 3, 5]In [202]: aOut[202]: [1, 3, 5, 3, 0]2、元組(tuple)
  • 元組特點

使用小括號()包圍;元組和列表一樣也是序列容器,具有序列的通用操作;元組和列表最大的區別是不可修改(和前面介紹的字符串一樣不能修改),所以元組不具有列表的大量方法。
  • 元組創建

In [225]: (1, 2, 3, 4)#小括號()包圍一串數字Out[225]: (1, 2, 3, 4)In [227]: tuple([1, 2, 3, 4])#使用tuple函數Out[227]: (1, 2, 3, 4)In [228]: tuple("1234")Out[228]: ('1', '2', '3', '4')
  • 元組操作

不能修改元組;可以切片,索引,相加等操作元組,可參考列表操作。
  • 元組方法

    由于元組不可修改,元組方法和列表有很大區別,如下。有count和index方法,用法類似列表中方法。

In [222]: print(dir(list))#列表的內置函數和方法

['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

In [219]: print(dir(tuple))#元組的內置函數和方法

['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index']


同系列文章
python3基礎01數值和字符串(一)python3基礎02數值和字符串(二)

原創不易"點贊"、"在看"勵下唄

總結

以上是生活随笔為你收集整理的list index out of bounds_python3基础03列表(list)和元组(tuple)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。