列表(list)是包含0個或多個元素的有序序列,屬於序列類型。列表的長度都是可變的,可自由對列表中的元素進行增加、刪除或替換。列表沒有長度限制,元素類型可以不同,可以同時包含整數、實數、字符串等基本類型,也可以是列表、元組、字典、集合以及其他自定義類型的對象,使用非常靈活。
一、列表的創建
創建列表只需將逗號分隔的不同元素使用方括號括起來即可:
>>>animal = ['element','monkey','snake','tiger'] #創建列表
>>>animal #打印animal
['element','monkey','snake','tiger']
tips:列表的索引從0開始。
二、增加元素
列表由3種增加元素的方法:append()、extend()、insert()
append()
使用append()方法可在列表末尾添加新的元素,語法格式為:list.append(obj)
,其中,list表示列表,obj表示添加到列表末尾的對象。
>>>add_list =[0,1,2,3] # 創建列表add_list並賦值
>>>add_list.append(4) # 使用append()為add_list末尾添加元素4
>>>add_list
[0,1,2,3,4]
extend()
使用extend()方法可在列表末尾一次性追加另一個序列中的多個值(用新列表擴展原來的列表),語法格式為:list.extend(seq)
。其中,list表示列表,seq表示添加到列表中的元素列表。
list_1 = [1,2,3]
list_2 = [4,5,6]
list_3 = [7,8,9]
list_1.append(list_2) # 將list_2看作一個對象,整體打包添加到list_1對象中
print(list_1)
list_2.extend(list_3) # 將list_3看作一個序列,將這個序列和list_2序列合並
print(list_2)
運行結果:
[1,2,3,[4,5,6]]
[4,5,6,7,8,9]
這也是append和extend方法的區別所在。
insert()
使用insert()方法可將指定對象插入到列表的指定位置。語法格式為:list.insert(index,obj)
,其中list表示列表,index表示對象需要插入的索引位置,obj表示要插入列表中的對象。
>>>number = [1,2,4,5]
>>>number.insert(2,3) # 使用insert()方法將元素3添加到列表索引為2的位置中
>>>number
[1,2,3,4,5]
三、查找元素與計數
查找元素
所謂在列表中查找元素,就是查看指定的元素是否存在列表中。列表提供index()方法用於返回指定元素在列表中首次出現的位置,如果該元素不在列表中則拋出異常。語法格式為:
list.index(obj)
其中,list表示列表,obj表示要查找的對象。
>>>list = ['tiger','rabbit','cat','dog']
>>>list.index('tiger')
0
計數
要想知道指定元素在列表中出現的次數,可以使用count()方法進行統計,其語法格式為:list.count(obj)
。其中,list表示列表,obj表示列表中要統計的對象。
>>> x=[1,2,1,2,1,2,1]
>>> x.count(1) # 使用count()方法統計1在變量x中的出現次數。
4
四、刪除元素
在列表中刪除元素的常用方法有3種:del命令、pop()方法和remove()方法。
del命令
del命令可根據索引/分片的方式刪除列表中的元素。
>>> number = [1,2,3,4,5]
>>> del number[1:3] # 使用del命令刪除number中索引從1到3(不包括3)的元素
>>> number
[1, 4, 5]
pop()方法
pop()方法用於移除列表中的一個元素(默認為最后一個元素),並且返回該元素的值。
語法格式為:list.pop([obj])
其中,list表示列表,obj為可選參數,表示移除列表元素的索引值,默認為-1,刪除最后一個列表值。
>>> number = [1,2,3,4,5]
>>> number.pop() # 使用pop()方法刪除number中的元素
5
>>> number
[1, 2, 3, 4]
>>> number.pop(0) # 使用pop()方法刪除number中索引為0的元素
1
>>> number
[2, 3, 4]
remove()方法
remove()方法用於移除列表中某個值的第一個匹配項。語法格式為:list.remove(obj)
。其中,list表示列表,obj表示列表中要移除的對象。
>>> number = [1,2,3,1,2,1,4,1]
>>> number.remove(1) # 使用remove()方法移除number中第一次出現1的元素。
>>> number
[2, 3, 1, 2, 1, 4, 1]
五、分片賦值
分片賦值就是以分片的形式給序列賦值,可以一次為多個元素賦值。
>>> x=[1,2,3,4]
>>> x
[1, 2, 3, 4]
>>> x[2:]=[5,6,7] # 替換變量x索引從2開始到最后的元素
>>> x
[1, 2, 5, 6, 7]
分片賦值還可以在不替換任何原有元素的情況下插入新的元素。
>>> x=[1,7]
>>> x[1:1]=[2,3,4,5,6] # 在變量x中索引1的位置插入列表[2,3,4,5,6]
>>> x
[1, 2, 3, 4, 5, 6, 7]
分片賦值也可以用來刪除元素。
>>> x=[1,2,3,4,5,6,7]
>>> x[1:6]=[] # 用空列表將x中索引1到索引6之間的元素替換
>>> x
[1, 7]
六、列表排序
reverse()方法
reverse()方法用於將列表中元素反向存放。語法格式為:list.reverse()
。其中,list表示列表,該方法沒有參數,沒有返回值。
>>> x=[1,2,3,4]
>>> x.reverse() # 使用reverse()方法將變量x中的元素反向存放
>>> x
[4, 3, 2, 1]
sort()方法
sort()方法用於對原列表進行排序(默認為升序排序),排序后的新列表會覆蓋原列表。
語法格式為:
list.sort([key=None][,reverse=False])
。
其中,list表示列表;key為可選參數,如果指定了該參數,會使用該參數的方法進行排序;reverse為可選參數,表示是否反向排序,默認為False。
>>> x=['a','abc','ab','abcd']
>>> x.sort(key=len,reverse=True) # 使用sort()方法對變量x中元素進行長度逆序排序
>>> x
['abcd', 'abc', 'ab', 'a']
sorted()函數
我們也可以使用內置函數sorted()對列表進行排序。與sort()方法不同,內置函數sorted()返回新列表,並不對原列表進行任何修改。
語法格式為:sorted(iterable[,key=None][,reverse=False])
其中,iterable表示可迭代對象,在這里就是列表名;參數key和reverse的用法和sort()方法中的相同。
>>> x=[1,5,2,3,4]
>>> y = sorted(x) # 將x中的元素升序排列后賦值給變量y
>>> x
[1, 5, 2, 3, 4]
>>> y
[1, 2, 3, 4, 5]