1. 程式人生 > >Python----list 常用方法總結

Python----list 常用方法總結

一、建立列表,把使用逗號分隔的資料用中括號[  ]括起來即為一個列表,列表也叫陣列、list、array;
列表裡面也可以再套列表,一個列表裡面套一個列表,叫二維陣列;一個裡面套一個列表,裡面的列表再套一個列表,這個叫三維陣列,套幾層就是幾維,定義格式如下:

1 list = [] #空列表
2 list1 = ['小白','小黑','小芳','小華','小高'] #普通陣列
3 list2 = ['小白',['小黑',500],'小芳','小華','小高'] #二維陣列
4 list3 = ['小白',['小黑',500,['anby','joker']],'小芳','小華','小高
'] #三維陣列

角標、索引
  通過下標可取到列表中的元素,下標從0開始計數,也就是說,比如說一個列表,有個5元素,那麼它第一個元素下標就是0,第二個就是1,以此類推,最後一個元素的下標可以寫-1,字串也有下標,
和列表一樣

二、列表中新增新元素

b = [1,2,3,4]

citys = []

citys.append('北京')  #在列表末尾增加一個元素

citys.insert(0,'上海')  #insert可指定增加的位置,在列表中0的位置即最前面增加一個元素,一次只能加一個,下標不能寫負數,如果指定的下標不存在,那麼就是在末尾新增

citys.extend(b)  #合併列表 將b列表中的元素新增到citys中

 

三、檢視列表中的值

print(cities[0])  #通過指定下標索引來訪問列表中的值,這裡0即代表查詢列表中第一個元素

print(cities[-1])  #-1代表最後一個元素

print(cities.index('廣州')) #獲取該元素的下標,如果有多個,則返回第一個,如果找不到該元素的話,會報錯

print(cities.count('廣州'))  #檢視該元素在list裡面出現的次數,如果該元素不存在,那麼返回0

遍歷列表
for i in list :
    print(i)

 

四、修改列表中的值,只能修改已有下標的元素

1 list[1]='南京'  #修改指定位置的元素值,指定的下標不存在,會報錯,將角標為1的元素值修改為:南京


五、刪除列表中的值

cities.pop()  #刪最後一個元素

cities.pop(0)  #刪除指定下標的元素

cities.remove('北京')  #刪除指定的元素,有多個相同的元素,刪除第一個

cities.clear()  #清空list

del cities[-1]  #刪除指定下標對應的元素 

del cities  #刪除整個列表, list刪除後無法訪問

print(cities.pop())  #有返回值

print(cities.remove())  #無返回值


六、列表操作的函式

list.reverse()將列表反轉

#注:list 中有字串、數字時不能排序,排序針對同類型
list.sort()排序,預設升序

list.sort(reverse=True) 降序排列


len(list)  #列表元素個數 

max(list)  #返回列表元素最大值

min(list)  #返回列表元素最小值 

list(seq)  #將元組轉換為列表

list1+list2  #合併list

list*3  #複製列表3次

enumerate 用法(列印元素對應的下標),同時取下標和元素
list = ['a','b','c']
for index,value in enumerate(lists):
    print(index,value)
#列印結果如下:
0 a
1 b
2 c


七、列表list的迴圈和切片
7.1 迴圈,如果直接for 迴圈一個list 的時候,那麼每次迴圈的值都是這個list 裡面的元素

for i in list:

    print (i)

7.2 切片,切片也就是另一種方式獲取列表的值,它可以獲取多個元素,可以理解為,從第幾個元素開始,到第幾個元素結束,獲取他們之間的值,格式是name:[1:10],格式是name:[1:10],比如說要獲取name的第一個元素到第五個元素,就可以用name[0:6],切片是不包含後面那個元素的值的,即顧頭不顧尾;前面的下標如果是0的話,可以省略不寫,這樣寫,name[:6],切片後面還有可以寫一個引數,叫做步長,也就是隔多少個元素,取一次,預設可以不寫,也就是隔一個取一次,切片操作也可以對字串使用,和列表的用法一樣,例項如下:

 1 name[n:m]  #切片是不包含後面那個元素的值(顧頭不顧尾)
 2 
 3 name[:m]  #如果切片前面一個值預設的話,從開頭開始取
 4 
 5 name[n:]  #如果切片後面的值預設的話,取到末尾
 6 
 7 name[:]  #如果全部預設,取全部
 8 
 9 name[n:m:s]  #s:步長  隔多少個元素取一次
10 
11 #步長是正數,從左往右取
12 
13 #步長是負數,從右往左取
14 
15 #注:切片同樣適用於字串,字串也有下標
16 
17 lis = list(range(1,21))
18 
19 print(lis[:18:-1])  #-1倒序,開頭沒有取值,所以預設從20往左取值,取到18的下標(19),但不顧尾,所以19不取
20 
21 #列印結果:
22 [20]


八、列表生成式
列表生成式即List Comprehensions,是Python內建的非常簡單卻強大的可以用來建立list的生成式。

例項1:要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]可以用list(range(1, 11)):list = list(range(1,11))
例項2:生成[1x1, 2x2, 3x3, ..., 10x10]可以用 list = list(x * x for x in range(1,11))
例項3:for迴圈後面還可以加上if判斷,這樣我們就可以篩選出僅偶數的平方:list = list(x * x for x in range(1,11) if x%2== 0)
例項4:使用兩層迴圈,可以生成全排列:
list = [m + n for m in 'ABC' for n in 'XYZ']
print(list)
輸出結果:['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']

例項5:for迴圈其實可以同時使用兩個甚至多個變數,比如dict的items()可以同時迭代key和value:
法一:
>>> d = {'x': 'A', 'y': 'B', 'z': 'C' }
>>> for k, v in d.items():
... print(k, '=', v)

結果:
y = B
x = A
z = C


九、總結
1,列表是一個有序的物件集合

2,一個物件在另外一個物件中嗎?用 in 來檢查

3,從列表中刪除物件 remove
remove:取一個物件值作為唯一引數。remove方法會從列表中刪除指定資料值的第一次出現。
如果在列表中找到了這個資料值,就會從列表中刪除包含這個值的物件(同時列表的大小減一)。如果在列表中沒有找到這個資料值,會報錯。

4,從列表中彈出物件 pop
pop:取一個可選的索引值(indexof)作為引數。pop方法根據物件的索引值從現有列表刪除和返回一個物件。
如果呼叫pop時沒有指定索引值,將刪除和返回列表中的最後一個物件。如果指定了一個索引值,則會刪除和返回那個位置上的物件。
如果列表為空或者呼叫pop時指定了一個不存在的索引值,會報錯。

5,用物件擴充套件列表 extend 
extend:取一個物件列表作為唯一引數。extend方法接收第二個列表,將其中的各個物件增加到現有列表。如果要將兩個列表合併為一個列表,這個方法就非常有用。

6,在列表中插入一個物件 insert/append
insert:取一個索引值和一個物件作為引數。insert 方法將一個物件插入到現有列表中指定索引值的前面。
這樣就可以將物件插入到現有列表的開頭,或者插入到列表中的任何位置。要把物件插入到列表末尾,用append 。用法 num.insert(2,"abc")

7,如何複製一個數據結構?不要使用賦值操作符複製列表;應當使用copy方法。
賦值操作都指向同一個資料,如果修改一個列表,另一個也會改變;如果想讓另一個變數引用一個現有列表,可以使用賦值操作(=)
copy:list2 = list1.copy() ;如果想建立現有列表中物件的副本,用他們初始化一個新列表,就一定要使用copy 方法

8,列表切片的使用【start:stop:step】不包含stop 索引值
step 為正數時,從右至左;step 為負數時,從左至右