1. 程式人生 > >python列表用法大全

python列表用法大全

轉載請註明出處:https://blog.csdn.net/qq_40678222/article/details/83048076

目錄

序言:

0.0 list()函式

1.0 append()函式

2.0 clear()函式

3.0 copy()函式

4.0 count()函式

5.0 extend()函式

6.0 index()函式

7.0 insert()函式

8.0 pop()函式

9.0 remove()函式

10.0 reverse()函式

11.0 sort()函式


序言:

列表中各元素間是有序的,屬於序列型別。列表可以進行元素的 新增,刪除,查詢,替換 等操作。列表長度沒有限制,不需要定義長度,列表中的元素型別可以不同,可以是 字母,數字,集合,列表,元組,字串等。

 

0.0 list()函式

描述:可以將其它的組合資料型別轉化為列表型別,或生成一個空列表。

語法:list() -> new empty list  返回一個空列表

            list(iterable) -> new list initialized from iterable's items  返回一個新列表

  • iterable —— 要轉換的組合資料型別。

程式示例:

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']
['厲', '害', '了', ',', '我', '的', '國', '!']

1.0 append()函式

描述:在列表ls最後(末尾)新增一個元素object

語法:ls.append(object) -> None 無返回值

  • object —— 要新增的元素。可以新增 列表,字典,元組,集合,字串等。

程式示例: 

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']

2.0 clear()函式

描述:刪除列表ls中的所有元素。

語法: ls.clear() -> None 返回值為空

程式示例:

ls = [1,2,3,"4",5,"a"]
ls.clear() #刪除列表中的所有元素。
print(ls.clear()) #無返回值
print(ls) #返回的ls為空列表。

程式執行結果:

None
[]

3.0 copy()函式

描述:生成一個新列表,複製ls中的所有元素。

語法: ls.copy() -> list 返回一個列表

程式示例:

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()複製是淺複製。

4.0 count()函式

描述:統計列表ls中value元素出現的次數

語法:ls.count(value) -> integer  返回一個整數

  • value —— 要統計的value元素。

程式示例:

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

5.0 extend()函式

描述:在列表ls末尾新增一個列表iterable。

語法:ls.extend(iterable) -> None 無返回值

  • iterable —— 要新增的列表。可以是整個列表iterable,也可以是列表iterable的一部分。

程式示例①:

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]]

6.0 index()函式

描述:列表ls中第一次出現元素value的位置。

語法: ls.index(value, start, stop)  -> integer 返回一個整數

  • value —— 要查詢的元素。
  • star —— 索引的起始位置。
  • stop —— 索引的結束位置。
  • [star,stop)

程式示例:

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

7.0 insert()函式

描述:在列表第index位置,新增元素object。

語法: ls.insert(index, object)

  • index —— 元素object插入列表ls的位置。
  • objece —— 將要新增的元素。可以是列表,元組,字典,集合,字串等

程式示例①:

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]

8.0 pop()函式

描述:將列表ls中第index項元素取出,並從列表ls中刪除該元素。若果省略index,則預設刪除列表最後(末尾)一個元素,並返回該元素。

語法:  ls.pop(index) -> item 返回刪除的項

  • index —— 要取出並刪除的元素下標的序數。

程式示例:

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']

9.0 remove()函式

描述:將列表ls中出現的第一個元素value刪除。

語法:ls.remove(value) -> None 返回值為空

  • value ———— 要刪除的元素。

程式示例:

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]


​

10.0 reverse()函式

描述:將列表ls中的元素反轉。

語法:ls.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]

11.0 sort()函式

描述:將列表ls中的同類元素按大小進行排序,預設從小到大排序。

語法: ls.sort(key=None, reverse=False) -> None 返回值為空

  • key —— 接受一個函式,且該函式只有一個返回值
  • reverse —— 排序規則,即排序是否反轉。預設為False 不反轉(升序),True 則反轉(降序)。

程式示例:

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()