Python學習隨筆_2_基礎:列表、元組
阿新 • • 發佈:2018-08-28
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 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_基礎:列表、元組