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函數
元組特點
元組創建
元組操作
元組方法
正文開始啦
先簡單說一下python容器和變量兩個概念。
python容器
容器(container)是python支持的一種數據結構基本概念,是可包含其他對象的對象(python中一切皆為對象,例如,我正在寫的博文,使用的python,鍵盤等);容器都包含了一個__contains__ 方法(dir函數可查看);
三種主要的python容器:
- 序列,如列表,元組和字符串,在序列中,每個元素都有編號;
- 映射,如字典,在映射中,每個元素都有名稱,也叫鍵;
- 集合(set)。
python變量(variable)
表示(或指向)特定值的名稱;
變量名稱只能由字母、數字和下劃線(_)構成,開頭不能為數字;
變量賦值及使用,如下:
In [2]: x=3#變量x賦值In [3]: print(x)#表達式中使用變量31、列表(list)
列表特點
列表創建
列表操作
相加(+)
相乘(*)
索引(index)
切片
列表元素修改
成員資格
列表推導式
此處簡單介紹,后續詳解。
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]: 0extend
使用一個列表擴展另外一個列表,此處要區別于前面提到的列表相加(效率和可讀性不及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
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
remove
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)元組特點
元組創建
元組操作
元組方法
由于元組不可修改,元組方法和列表有很大區別,如下。有count和index方法,用法類似列表中方法。
['__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)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 苹果耳机a2031是几代
- 下一篇: cf枪王奖励什么角色(为什么还有人玩穿越