1. 程式人生 > >python學習之路--python基礎之列表操作

python學習之路--python基礎之列表操作

本文主要介紹下python列表的的一些基本操作

列表是我們在python程式設計中常用的資料型別之一,通過列表我們可以對資料實現最方便的儲存、修改等操作。

定義列表

 1 names=['ZhangSan','LiSi','WangWu'] 

列表的訪問:通過下表來訪問列表中的元素,下標從0開始計數,還可以反著取,-1表示最後一個元素

1 >>> names[0]
2 'ZhangSan'
3 >>> names[2]
4 'WangWu'
5 >>> names[-1]
6 'WangWu'
7 >>> names[-2]
8 'LiSi' 9 >>>

切片操作

 1 >>> names=['ZhangSan','LiSi','WangWu','ZhaoLiu','Tom','Amy']
 2 >>> names[1:4]  #取下標1到4之間的資料元素,包括1,不包括4
 3 ['LiSi', 'WangWu', 'ZhaoLiu']
 4 >>> names[1:-1]  #取小標1到-1的值,不包括-1
 5 ['LiSi', 'WangWu', 'ZhaoLiu', 'Tom']
 6 >>> names[0:3]
7 ['ZhangSan', 'LiSi', 'WangWu'] 8 >>> names[:3] #如果是從頭開始取,0可以忽略,跟上句結果一樣 9 ['ZhangSan', 'LiSi', 'WangWu'] 10 >>> names[3:] #如果想取最後一位,必須不能寫-1 11 ['ZhaoLiu', 'Tom', 'Amy'] 12 >>> names[3:-1] #不包含-1 13 ['ZhaoLiu', 'Tom'] 14 >>> names[0::2] #2代表步長,每隔一個元素就取一個 15 ['
ZhangSan', 'WangWu', 'Tom'] 16 >>> names[::2] #和上句效果一樣 17 ['ZhangSan', 'WangWu', 'Tom'] 18 >>>
View Code

 追加操作:在列表最後追加元素列表

1 >>> names=['ZhangSan','LiSi','WangWu']
2 >>> names.append("我是新人")
3 >>> names
4 ['ZhangSan', 'LiSi', 'WangWu', '我是新人']
5 >>>
View Code

插入操作

1 >>> names=['ZhangSan','LiSi','WangWu','Tony']
2 >>> names.insert(2,"Tom")  #在WangWu前面插入Tom
3 >>> names
4 ['ZhangSan', 'LiSi', 'Tom', 'WangWu', 'Tony']
5 >>> names.insert(4,"LuXi")  #在WangWu後面插入LuXi
6 >>> names
7 ['ZhangSan', 'LiSi', 'Tom', 'WangWu', 'LuXi', 'Tony']
8 >>>
View Code

修改操作

1 >>> names=['ZhangSan','LiSi','WangWu','Tony']
2 >>> names[2]="John" ##將WangWu改成"John"
3 >>> names
4 ['ZhangSan', 'LiSi', 'John', 'Tony']
5 >>>
View Code

刪除操作

 1 >>> names=['ZhangSan','LiSi','WangWu','ZhaoLiu','Tony','Tom','LiLei']
 2 >>> del names[2]  #刪除下標為2的元素,即WangWu
 3 >>> names
 4 ['ZhangSan', 'LiSi', 'ZhaoLiu', 'Tony', 'Tom', 'LiLei']
 5 >>> del names[4]  #刪除下標為4的元素,即Tom
 6 >>> names
 7 ['ZhangSan', 'LiSi', 'ZhaoLiu', 'Tony', 'LiLei']
 8 >>> names.remove("Tony")  #刪除指定的元素Tony
 9 >>> names
10 ['ZhangSan', 'LiSi', 'ZhaoLiu', 'LiLei']
11 >>> names.pop()  #刪除最後一個元素
12 'LiLei'
13 >>> names
14 ['ZhangSan', 'LiSi', 'ZhaoLiu']
15 >>>
View Code

擴充套件操作

1 >>> names=['ZhangSan', 'LiSi', 'ZhaoLiu']
2 >>> b=[1,2,3]
3 >>> names.extend(b)
4 >>> names
5 ['ZhangSan', 'LiSi', 'ZhaoLiu', 1, 2, 3]
6 >>>
View Code

統計列表中相同元素的個數

1 >>> names=['ZhangSan', 'LiSi', 'ZhaoLiu','LiSi',1, 2, 3]
2 >>> names.count("LiSi")
3 2
4 >>>
View Code

排序和翻轉:優先順序   特殊符號>數字>大寫>小寫

 1 >>> names=['ZhangSan', 'LiSi', 'ZhaoLiu','LiSi',1, 2, 3]
 2 >>> names.sort()
 3 Traceback (most recent call last):
 4   File "<stdin>", line 1, in <module>
 5 TypeError: unorderable types: int() < str()  #在python3裡面不同資料型別不能在一起排序
 6 >>>
 7 >>> names[-1]='3'
 8 >>> names[-2]='2'
 9 >>> names[-3]='1'
10 >>> names
11 ['LiSi', 'LiSi', 'ZhangSan', 'ZhaoLiu', '1', '2', '3']
12 >>> names.sort()  #將列表排序
13 >>> names
14 ['1', '2', '3', 'LiSi', 'LiSi', 'ZhangSan', 'ZhaoLiu']
15 >>> names.reverse()  #將列表反轉
16 >>> names
17 ['ZhaoLiu', 'ZhangSan', 'LiSi', 'LiSi', '3', '2', '1']
18 >>>
View Code

獲取下標

1 >>> names=['ZhaoLiu', 'ZhangSan', 'LiSi', 'LiSi', '3', '2', '1']
2 >>> names.index('LiSi')  #如果列表中有多個相同元素,只返回找到的第一個的下標
3 2
4 >>> names.index('3')
5 4
6 >>>
View Code

淺拷貝copy():

淺複製並不會產生一個獨立的物件單獨存在,他只是將原有的資料塊打上一個新標籤,所以當其中一個標籤被改變的時候,資料塊就會發生變化,另一個標籤也會隨之改變。
 1 >>> names=['ZhaoLiu', 'ZhangSan',['lilei','luxi'], 'LiSi','3', '2', '1']
 2 >>> name_copy=names.copy()  #只是淺複製
 3 >>> names
 4 ['ZhaoLiu', 'ZhangSan', ['lilei', 'luxi'], 'LiSi', '3', '2', '1']
 5 >>> name_copy
 6 ['ZhaoLiu', 'ZhangSan', ['lilei', 'luxi'], 'LiSi', '3', '2', '1']
 7 >>> names[1]="張三"   #只改變names裡面的值,name_copy裡面的不變
 8 >>> names
 9 ['ZhaoLiu', '張三', ['lilei', 'luxi'], 'LiSi', '3', '2', '1']
10 >>> name_copy
11 ['ZhaoLiu', 'ZhangSan', ['lilei', 'luxi'], 'LiSi', '3', '2', '1']
12 >>> names[2][0]="LILEI"  #names和name_copy裡面的值都改變
13 >>> names
14 ['ZhaoLiu', '張三', ['LILEI', 'luxi'], 'LiSi', '3', '2', '1']
15 >>> name_copy
16 ['ZhaoLiu', 'ZhangSan', ['LILEI', 'luxi'], 'LiSi', '3', '2', '1']
17 >>> name_copy[2][1]='露西'
18 >>> names
19 ['ZhaoLiu', '張三', ['LILEI', '露西'], 'LiSi', '3', '2', '1']
20 >>> name_copy
21 ['ZhaoLiu', 'ZhangSan', ['LILEI', '露西'], 'LiSi', '3', '2', '1']
View Code

深複製deepcopy():

我們尋常意義的複製就是深複製,即將被複制物件完全再複製一遍作為獨立的新個體單獨存在。所以改變原有被複制物件不會對已經複製出來的新物件產生影響。
 1 #Author:Zhang XuLin
 2 import copy
 3 names=['ZhaoLiu', 'ZhangSan',['lilei','luxi'], 'LiSi','3', '2', '1']
 4 name_copy=copy.deepcopy(names)
 5 print(names)
 6 print(name_copy)
 7 print("========================")
 8 #['ZhaoLiu', 'ZhangSan', ['lilei', 'luxi'], 'LiSi', '3', '2', '1']
 9 #['ZhaoLiu', 'ZhangSan', ['lilei', 'luxi'], 'LiSi', '3', '2', '1']
10 #========================
11 names[1]="張三"
12 print(names)
13 print(name_copy)
14 print("========================")
15 #['ZhaoLiu', '張三', ['lilei', 'luxi'], 'LiSi', '3', '2', '1']
16 #['ZhaoLiu', 'ZhangSan', ['lilei', 'luxi'], 'LiSi', '3', '2', '1']
17 #========================
18 
19 names[2][0]="LILEI"
20 print(names)
21 print(name_copy)
22 print("************************************")
23 #['ZhaoLiu', '張三', ['LILEI', 'luxi'], 'LiSi', '3', '2', '1']
24 #['ZhaoLiu', 'ZhangSan', ['lilei', 'luxi'], 'LiSi', '3', '2', '1']
25 #************************************
26 
27 name_copy[2][1]='露西'
28 print(names)
29 print(name_copy)
30 
31 #['ZhaoLiu', '張三', ['LILEI', 'luxi'], 'LiSi', '3', '2', '1']
32 #['ZhaoLiu', 'ZhangSan', ['lilei', '露西'], 'LiSi', '3', '2', '1']
View Code