轉載:python中列表的用法總結
阿新 • • 發佈:2018-12-10
count() 運行 list() 插入字符串 error: count 字符串 xtend err
一、list()函數
ls = list() #創建一個空列表。 st = {1,2,3,"a"} #集合類型 d = {1:"a",2:"b"} #字典類型 t = (1,2,3,"b") #元組類型 s = "厲害了,我的國!" #字符串類型 #將集合,字典,元組,字符串 類型轉化為列表類型 ls1 =list(st) ls2 =list(d) ls3 =list(t) ls4 =list(s) print(ls) print(ls1) print(ls2) print(ls3) print(ls4)
程序運行結果:
[] [1, 2, 3, ‘a‘] [1, 2] [1, 2, 3, ‘b‘] [‘厲‘, ‘害‘, ‘了‘, ‘,‘, ‘我‘, ‘的‘, ‘國‘, ‘!‘]
二、append()函數
ls1 = [1,2,3,4,5,6] ls2 = [1,2,3,4,5,6] ls1.append(12) #可以添加列表,字典,元組,集合,字符串等 ls2.append([1,"a"]) #添加列表 ls2.append({2:"a",3:"hj"}) #添加字典 ls2.append((1,"k",3)) #添加元組 ls2.append({"1","2","h"}) #添加集合 ls2.append("123abc") #添加字符串 print(ls1.append(12)) #無返回值 print(ls1) #append()函數的操作對象是原列表。 print(ls2)
程序運行結果:
None [1, 2, 3, 4, 5, 6, 12, 12] [1, 2, 3, 4, 5, 6, [1, ‘a‘], {2: ‘a‘, 3: ‘hj‘}, (1, ‘k‘, 3), {‘2‘, ‘1‘, ‘h‘}, ‘123abc‘]
三、clear()函數
ls = [1,2,3,"4",5,"a"] ls.clear() #刪除列表中的所有元素。 print(ls.clear()) #無返回值 print(ls) #返回的ls為空列表。
程序運行結果:
None []
四、copy()函數
ls = [1,2,3,[4,5,6]] lt = ls.copy() #lt復制ls中的所有元素 ls.clear() #刪除ls所有元素,lt中的元素沒有被刪除。 lk = ls #這不是復制,而是給列表ls新關聯一個引用,即增加一個別名,ls和lt指向同一個內存地址。 print(id(ls),id(lk)) print(lt) print(ls)
程序運行結果:
2161190907400 2161190907400 [1, 2, 3, [4, 5, 6]] []
發現一個有趣的現象:
無論是修改原列表ls的內嵌套列表的元素,還是修改復制列表lt的內嵌套列表元素。列表ls和列表lt的內嵌套列表元素都將改變。
但修改列表ls或列表lt的其它非嵌套元素,都不改變對方相應的元素。
程序示例①:
ls = [1,2,3,[4,5,6]] lt = ls.copy() #lt復制ls中的所有元素 ls[0] = "a" #對變列表ls中的第一個元素進行修改 ls[3][0] = "a" #對列表ls中第四個元素的第一個元素進行修改 print(lt) #列表lt的第一個元素不變,但第四個元素的第一個元素發生改變。 print(ls)
程序運行結果:
[1, 2, 3, [‘a‘, 5, 6]] [‘a‘, 2, 3, [‘a‘, 5, 6]]
程序示例②:
ls = [1,2,3,[4,5,6]] lt = ls.copy() lt[0] = "a" #對變列表lt中的第一個元素進行修改 lt[3][0] = "a" #對列表lt中第四個元素的第一個元素進行修改 print(lt) print(ls) #列表ls的第一個元素不變,但第四個元素的第一個元素發生改變。
程序運行結果:
[‘a‘, 2, 3, [‘a‘, 5, 6]] [1, 2, 3, [‘a‘, 5, 6]]
程序示例③:深層復制方法
import copy ls = [1,2,3,[7,"b",9],"a"] lt1 = copy.deepcopy(ls) #深層復制。 lt2 = copy.copy(ls) #淺層復制 ls[3][1] = "abc123" #改變原列表ls中內嵌套列表[7,"b",9] 中的“b”元素。深層復制的lt1列表對應位置元素不改變,但淺層復制改變。 print(ls) print("深層復制:",lt1) print("淺層復制:",lt2)
程序運行結果:
[1, 2, 3, [7, ‘abc123‘, 9], ‘a‘] 深層復制: [1, 2, 3, [7, ‘b‘, 9], ‘a‘] 淺層復制: [1, 2, 3, [7, ‘abc123‘, 9], ‘a‘]
總結:ls.copy() 函數只能 copy 一層,即copy()復制是淺復制。
五、count()函數
ls = [1,2,3,5,4,5,5,5,5,"python"] print(ls.count(5)) #統計列表ls中 5 出現的次數 print(ls.count(0)) #列表ls中無0元素 print(ls.count("python")) #統計列表ls中 "python" 出現的次數。
程序運行結果:
5
0
1
六、extend()函數
程序示例①:
ls = [1,2,"a",[4,5,"a"]] lt = [1,"abc","b",[1,2]] ls.extend(lt) #返回值為空,將列表lt的元素添加到列表ls末尾。 print(ls.extend(lt)) print(ls) print(lt) #列表lt元素不變
程序運行結果:
None [1, 2, ‘a‘, [4, 5, ‘a‘], 1, ‘abc‘, ‘b‘, [1, 2], 1, ‘abc‘, ‘b‘, [1, 2]] [1, ‘abc‘, ‘b‘, [1, 2]]
程序示例②:
ls = [1,2,"a",[4,5,"a"]] lt = [1,"abc","b",[1,2]] ls.extend(lt[0:3]) #返回值為空,將列表lt中的 1, ‘abc‘, ‘b‘ 添加到列表ls末尾。 print(ls) print(lt) #列表lt元素不變
程序運行結果:
[1, 2, ‘a‘, [4, 5, ‘a‘], 1, ‘abc‘, ‘b‘] [1, ‘abc‘, ‘b‘, [1, 2]]
七、index()函數
ls = [1,2,3,"a",3,5,"a",5,[1,7,"b"]] print(ls.index("a")) #返回列表ls中"a"第一次出現的位置。 print(ls.index("a",4)) #索引的起始位置為下標為4的元素,索引範圍為 3, 5, ‘a‘, 5, [1, 7, ‘b‘ print(ls.index("a",4,8)) #索引的起始位置為下標為4的元素,結束位置為下標為7的元素。索引範圍 3, 5, ‘a‘, 5 print(ls.index(3)) print(ls[8].index("b")) #返回列表ls內嵌套列表[1,7,"b"]中"b"第一次出現的位置 print(ls.index(0)) #列表ls無0,報錯
結果:
3 6 6 2 2 --------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-64-c3f3008df73b> in <module>() 5 print(ls.index(3)) 6 print(ls[8].index("b")) #返回列表ls內嵌套列表[1,7,"b"]中"b"第一次出現的位置 ----> 7 print(ls.index(0)) #列表ls無0,報錯 ValueError: 0 is not in list
八、insert()函數
程序示例①:
ls = [1,2,"a",["a",5,8]] ls.insert(3,"b")#在列表ls下標為3的位置插入元素 1 ls.insert(3,1) #在列表ls下標為3的位置插入元素 "b" ls[5].insert(0,"acv") #在列表ls的內嵌套列表["a",5,8],下標為0的位置插入字符串"acv" print(ls)
程序運行結果:
[1, 2, ‘a‘, 1, ‘b‘, [‘acv‘, ‘a‘, 5, 8]]
程序示例②:
ls = [1,2,3] ls.insert(0,[1,2,3]) #插入列表 ls.insert(0,(1,2,3)) #插入元組 ls.insert(0,{1:"a",2:"b"}) #插入字典 ls.insert(0,{1,2,3}) #插入集合 print(ls)
程序運行結果:
[{1, 2, 3}, {1: ‘a‘, 2: ‘b‘}, (1, 2, 3), [1, 2, 3], 1, 2, 3]
九、pop()函數
ls = [1,2,"a","y",[1,2,3],"b"] print(ls.pop(0)) #取出下標為0的元素,並從列表ls中刪除。 print(ls.pop(3)) print(ls.pop()) #默認取出列表ls最後一個元素,並刪除。 print(ls) #列表中的 1 [1,2,3] "b" 元素已被刪除。
結果:
1 [1, 2, 3] b [2, ‘a‘, ‘y‘]
十、remove()函數
ls1 = [1,2,"a",3,1,1,55,"a,1"] ls2 = [1,2,"a",3,1,1,55,"a,1"] ls1.remove(1) #刪除ls1中第一次出現的元素 1 ls2.remove("a") ##刪除ls2中第一次出現的元素 "a" print(ls1.remove(1)) #返回值為空 print(ls1) print(ls2)
結果:
None [2, ‘a‘, 3, 1, 55, ‘a,1‘] [1, 2, 3, 1, 1, 55, ‘a,1‘]
也可以使用python的保留字 del 對列表的元素或部分片段進行刪除
語法:
① del <列表變量>[索引序列號]
② del <列表變量>[索引起始位置 :索引結束位置]
③ del <列表變量>[索引起始位置 :索引結束位置:步長]
程序示例:
ls1 = [1,2,3,4,"a",[1,2,3],5,6] ls2 = [1,2,3,4,"a",[1,2,3],5,6] ls3 = [1,2,3,4,"a",[1,2,3],5,6] del ls1[0] #刪除列表ls1中下標為0的元素 print(ls1) del ls1[2:] #刪除列表ls1中 起始下標為2,到結尾的元素 print(ls1) del ls2[2:6] #刪除列表ls2中 起始下標為2,終止下標為6 之間的元素。 print(ls2) del ls3[1:6:2] #起始位置為2,終止位置為6,步長為2 print(ls3)
程序運行結果:
[2, 3, 4, ‘a‘, [1, 2, 3], 5, 6] [2, 3] [1, 2, 5, 6] [1, 3, ‘a‘, 5, 6] ?
十一、reverse()函數
ls1 = [1,2,3,4,5,6,7,8,9] ls1.reverse() #將列表ls1反轉輸出 print(ls1) ls2 = [2,5,8,9,4,1,2,6,2,1,3] ls2.sort(reverse=True) #ls2.sort()默認將列表ls2按從小到大的序數排列。reverse=True 使排序後的列表反轉,reverse=False 則不反轉 print(ls2)
結果:
[9, 8, 7, 6, 5, 4, 3, 2, 1]
[9, 8, 6, 5, 4, 3, 2, 2, 2, 1, 1]
十二、sort()函數
ls1 = [5,2,1,6,9,55,2,8,10] ls2 = [(1,2),(3,5),(55,1),(6,0)] ls3 = ["a","z","A","y","g"] ls4 = [1,6,2,"a","z","h"] ls1.sort() #默認升序排序 print(ls1) def f(n): return n[1] #對元組的第二個元素進行升序排序 ls2.sort(key=f) print(ls2) ls3.sort(reverse=True) #降序排序 print(ls3) ls4.sort() #會報錯,列表ls4中元素種類不同。 print(ls4)
結果:
[1, 2, 2, 5, 6, 8, 9, 10, 55] [(6, 0), (55, 1), (1, 2), (3, 5)] [‘z‘, ‘y‘, ‘g‘, ‘a‘, ‘A‘] --------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-123-7a42b5fc86f8> in <module>() 15 print(ls3) 16 ---> 17 ls4.sort() 18 print(ls4) TypeError: unorderable types: str() < int()
轉載:python中列表的用法總結