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 為負數時,從左至右