1. 程式人生 > >Python學習隨筆_2_基礎:列表、元組

Python學習隨筆_2_基礎:列表、元組

mos 提醒 其中 inf zha span 插入 購物車 python學習

一、列表

列表是Python 最常用的數據類型之一,通過列表可以對數據實現最方便的存儲、修改等操作。

1、定義列表

1 names = ["Cz","Cao","Zhang","Hui","Yang"]
2 print(names)

技術分享圖片

2、元素訪問:通過下標

1 >>> names = ["Cz","Cao","Zhang","Hui","Yang"]
2 >>> names[0]
3 Cz
4 >>> names[1]
5 Cao
6 >>> names[-1]
7 Yang

3、切片訪問

 1 >>> names = ["
Cz","Cao","Zhang","Hui","Yang","Xiang","Xin"] 2 >>> names[1:3] #切片取值為[a,b)區間 3 [Cao, Zhang] 4 >>> names[:3] #默認從頭開始取值 5 [Cz, Cao, Zhang] 6 >>> names[-3:-1] #切片也能倒取 7 [Yang, Xiang] 8 >>> names[-3:] #若倒取想獲得最後一個值,只能用默認值 9 [Yang, Xiang, Xin
] 10 >>> names[:4:2] #步長為2,取值 11 [Cz, Zhang]

4、追加元素

1 >>> names = ["Cz","Cao","Zhang","Hui","Yang","Xiang","Xin"]
2 >>> names.append(New_person)
3 >>> print(names)
4 [Cz, Cao, Zhang, Hui, Yang, Xiang, Xin, New_person]

5、插入元素

1 >>> names = ["
Cz","Cao","Zhang","Hui","Yang","Xiang","Xin"] 2 >>> names.insert(1,New_person) 3 >>> names 4 [Cz, New_person, Cao, Zhang, Hui, Yang, Xiang, Xin]

6、修改元素

1 >>> names
2 [Cz, New_person, Cao, Zhang, Hui, Yang, Xiang, Xin]
3 >>> names[1] = Old_person
4 >>> names
5 [Cz, Old_person, Cao, Zhang, Hui, Yang, Xiang, Xin]

7、刪除元素

 1 >>> names
 2 [Cz, Old_person, Cao, Zhang, Hui, Yang, Xiang, Xin]
 3 >>> del names[1]  #刪除指定下標元素
 4 >>> names
 5 [Cz, Cao, Zhang, Hui, Yang, Xiang, Xin]
 6 >>> names.remove(Xiang)  #刪除指定元素
 7 >>> names
 8 [Cz, Cao, Zhang, Hui, Yang, Xin]
 9 >>> names.pop()  #刪除最後一個元素
10 Xin
11 >>> names
12 [Cz, Cao, Zhang, Hui, Yang]

8、獲取下標

1 >>> names
2 [Cz, Cao, Zhang, Hui, Yang]
3 >>> names.index(Zhang)
4 2

返回元素第一次出現的下標。

9、統計元素出現次數

1 >>> names
2 [Cz, Cao, Zhang, Hui, Yang, Cz]
3 >>> names.count("Cz")
4 2

10、拓展:追加列表

1 num = [1,2,3]
2 >>> names.extend(num)
3 >>> names
4 [Cz, Cao, Zhang, Hui, Yang, Cz, 1, 2, 3]

11、列表排序、反轉

技術分享圖片
 1 >>> names
 2 [Cz, Cao, Zhang, Hui, Yang, Cz, 1, 2, 3]
 3 >>> names.sort()
 4 Traceback (most recent call last):
 5   File "<pyshell#42>", line 1, in <module>
 6     names.sort()
 7 TypeError: unorderable types: int() < str()
 8 >>> names[-1] = 3
 9 >>> names[-2] = 2
10 >>> names[-3] = 1
11 >>> names.sort()
12 >>> names
13 [1, 2, 3, Cao, Cz, Cz, Hui, Yang, Zhang]
14 >>> #Python 3.x 裏不同數據類型不能放在一起排序了
15 >>> names.reverse() #列表反轉
16 >>> names
17 [Zhang, Yang, Hui, Cz, Cz, Cao, 3, 2, 1]
View Code

12、列表copy

 1 >>> import copy
 2 >>> copy1 = ["aa","bb",["ee","ff"],"cc","dd"]
 3 >>> copy2 = copy.copy(copy1) #淺copy
 4 >>> copy3 = copy.deepcopy(copy1) #深copy
 5 >>> copy1[1] = "bbb"
 6 >>> copy1[2][0] = "eee"
 7 >>> copy1
 8 [aa, bbb, [eee, ff], cc, dd]
 9 >>> copy2
10 [aa, bb, [eee, ff], cc, dd]
11 >>> copy3
12 [aa, bb, [ee, ff], cc, dd]

Why?

Becase:學習引用後解釋,目前記住淺copy時:copy1修改嵌套列表時,copy2同時被修改。

二、一個好玩但不太實用的列表copy例子

一對夫妻,維護同一個銀行賬戶!雖然實際開發中絕對不會這麽做。。。

可能還有其他應用場景,但是我沒想到。(就連這個也是別處看到的。。。)

 1 >>> import copy
 2 >>> person = [name,[saving,100]]
 3 >>> p1 = person[:]
 4 >>> p2 = person[:]
 5 >>> p1
 6 [name, [saving, 100]]
 7 >>> p2
 8 [name, [saving, 100]]
 9 >>> p1[0] = cz
10 >>> p2[0] = zhang
11 >>> p1
12 [cz, [saving, 100]]
13 >>> p2
14 [zhang, [saving, 100]]
15 >>> p1[1][1] = 50    #其中一方花了50
16 >>> p1
17 [cz, [saving, 50]]
18 >>> p2
19 [zhang, [saving, 50]]

三、元組

元組(tuple)跟列表類似,也是存一組數據,只不是它一旦創建,便不能再修改,所以又叫只讀列表。

有且僅有的兩個方法,如下:

1 >>> names = (cz,zhang,cao)
2 >>> names.count(cz)
3 1
4 >>> names.index(cz)
5 0

好,元組學完了。

四、練習

需求(該練習選自http://www.cnblogs.com/alex3714/articles/5717620.html):

  1. 啟動程序後,讓用戶輸入工資,然後打印商品列表
  2. 允許用戶根據商品編號購買商品
  3. 用戶選擇商品後,檢測余額是否夠,夠就直接扣款,不夠就提醒
  4. 可隨時退出,退出時,打印已購買商品和余額
技術分享圖片
 1 salary = int(input(Please input you salary: ))
 2 
 3 print(‘‘‘This is a list of goods. Please choose!
 4 Direct settlement after selection, do not return!
 5 You can enter Q to leave!
 6 Thank you!‘‘‘)
 7 
 8 commidity = [[1,IPhone,6188],[2,Honer,2188],[3,Book,58],[4,Computers,7888],[5,Water,2],[6,CPU_I7,3288]]
 9 shopping_car = []
10 
11 stat = 0
12 
13 while stat != Q:
14     for comm in commidity:
15         print(comm[0],  ,comm[1],  ,comm[2])
16 
17     stat = input(Please input you selection: )
18     
19     if stat == Q:
20         break
21 
22     if salary >= commidity[int(stat)-1][2]:
23         shopping_car.append(commidity[int(stat)-1])
24         salary = salary-commidity[int(stat)-1][2]
25         print(Choose success!)
26 
27     if salary < commidity[int(stat)-1][2]:
28         print(Sorry, your credit is running low!)
29 
30 print(‘‘‘Your balance is:{_salary}.
31 You have purchased the following commodities:‘‘‘.format(_salary=salary))
32 for shop in shopping_car:
33     print(shop[0],  ,shop[1],  ,shop[2])
購物車

Python學習隨筆_2_基礎:列表、元組