第一章我們大概介紹了列表的基本用法,本節(jié)我們學(xué)習(xí)下
定義:[]內(nèi)以逗號(hào)分隔,按照索引,存放各種數(shù)據(jù)類(lèi)型,每個(gè)位置代表一個(gè)元素
再回顧下列表的特點(diǎn):
1.可存放多個(gè)值
2.按照從左到右的順序定義列表元素,下標(biāo)從0開(kāi)始順序訪問(wèn),有序

3.可修改指定索引位置對(duì)應(yīng)的值,可變
列表的增加操作
追加,數(shù)據(jù)會(huì)追加到尾部
>>> names
['alex', 'jack']
>>> names.append("rain")
>>> names.append("eva")
>>>
>>> names
['alex', 'jack', 'rain', 'eva']
插入,可插入任何位置
>>> names.insert(2,"黑姑娘")
>>> names
['alex', 'jack', '黑姑娘', 'rain', 'eva']
>>>
合并,可以把另一外列表的值合并進(jìn)來(lái)
>>> n2 = ["狗蛋","綠毛","雞頭"]
>>> names
['alex', 'jack', '黑姑娘', 'rain', 'eva']
>>> names.extend(n2)
>>> names
['alex', 'jack', '黑姑娘', 'rain', 'eva', '狗蛋', '綠毛', '雞頭']
列表嵌套
>>> names.insert(2,[1,2,3])
>>> names
['alex', 'jack', [1, 2, 3], '黑姑娘', 'rain', 'eva', '狗蛋', '綠毛', '雞頭']
>>> names[2][1]
2
刪除操作
del 直接刪
>>> names
['alex', 'jack', [1, 2, 3], '黑姑娘', 'rain', 'eva', '狗蛋', '綠毛', '雞頭']
>>> del names[2]
>>> names
['alex', 'jack', '黑姑娘', 'rain', 'eva', '狗蛋', '綠毛', '雞頭']
pop 刪
>>> names
['alex', 'jack', '黑姑娘', 'rain', 'eva', '狗蛋', '綠毛', '雞頭']
>>> names.pop() #默認(rèn)刪除最后一個(gè)元素并返回被刪除的值
'雞頭'
>>> names
['alex', 'jack', '黑姑娘', 'rain', 'eva', '狗蛋', '綠毛']
>>> help(names.pop)
>>> names.pop(1)? #刪除指定元素
'jack'
clear 清空
>>> n2
['狗蛋', '綠毛', '雞頭']
>>> n2.clear()
>>> n2
[]
修改操作
>>> names
['alex', '黑姑娘', 'rain', 'eva', '狗蛋', '綠毛']
>>> names[0] = "金角大王"
>>> names[-1] = "銀角大王"
>>> names
['金角大王', '黑姑娘', 'rain', 'eva', '狗蛋', '銀角大王']
查操作
>>> names
['金角大王', '黑姑娘', 'rain', 'eva', '狗蛋', '銀角大王', 'eva']
>>>
>>> names.index("eva") #返回從左開(kāi)始匹配到的第一個(gè)eva的索引
3
>>> names.count("eva") #返回eva的個(gè)數(shù)
2
切片
切片就像切面包,可以同時(shí)取出元素的多個(gè)值?
names[start:end]
>>> names
['金角大王', '黑姑娘', 'rain', 'eva', '狗蛋', '銀角大王', 'eva']
>>> names[1:4]? #不包含下標(biāo)4的元素
['黑姑娘', 'rain', 'eva']
*切片的特性是顧頭不顧尾,即start的元素會(huì)被包含,end-1是實(shí)際取出來(lái)的值?
倒著切
>>> names[-5:-1]
['rain', 'eva', '狗蛋', '銀角大王']
但其實(shí)我想要的是后5個(gè),只打印了4個(gè),'eva'這個(gè)值沒(méi)出來(lái),為什么,因?yàn)樯厦嫣岬降念欘^不顧尾
可是想把后5個(gè)全取出來(lái)如何做呢??
>>> names[-5:]
['rain', 'eva', '狗蛋', '銀角大王', 'eva']
如果取前幾個(gè)值 ,一樣可以把:號(hào)左邊的省掉
>>> names
['金角大王', '黑姑娘', 'rain', 'eva', '狗蛋', '銀角大王', 'eva']
>>> names[0:3]
['金角大王', '黑姑娘', 'rain']
>>> names[:3]? #跟上面一樣的效果
['金角大王', '黑姑娘', 'rain']
步長(zhǎng),?允許跳著取值
names[start:end:step] #step 默認(rèn)是1
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a[0:7:2]? #設(shè)置步長(zhǎng)為2
[0, 2, 4, 6]
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>>
>>> a[::3] #按步長(zhǎng)3打印列表,第1個(gè):是省略掉的start:end
[0, 3, 6, 9]
列表反轉(zhuǎn)
>>> a[::-1] #通過(guò)把步長(zhǎng)設(shè)置成負(fù)值,可達(dá)到列表返轉(zhuǎn)的效果
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
>>> a[::-2]
[9, 7, 5, 3, 1]
排序&反轉(zhuǎn)
排序
>>> a = [83,4,2,4,6,19,33,21]
>>> a.sort()
>>> a
[2, 4, 4, 6, 19, 21, 33, 83]
下面的排序結(jié)果為何如何解釋?zhuān)?/p>
>>> names=['金角大王', 'rain', '@', '黑姑娘', '狗蛋', "4","#",'銀角大王', 'eva']
>>> names.sort()
>>> names
['#', '4', '@', 'eva', 'rain', '狗蛋', '金角大王', '銀角大王', '黑姑娘']
答案全在這張表上,雖然后面我們會(huì)講,但現(xiàn)在先知道,排序的優(yōu)化級(jí)規(guī)則是按這張表來(lái)的

反轉(zhuǎn)
>>> names
['#', '4', '@', 'eva', 'rain', '狗蛋', '金角大王', '銀角大王', '黑姑娘']
>>> names.reverse()
>>> names
['黑姑娘', '銀角大王', '金角大王', '狗蛋', 'rain', 'eva', '@', '4', '#']
循環(huán)列表
>>> for i in names:?
...? ? print(i)
...
黑姑娘
銀角大王
金角大王
狗蛋
rain
eva
@
4
#
練習(xí)
針對(duì)列表names=['金角大王', '黑姑娘', 'rain', 'eva', '狗蛋', '銀角大王', 'eva','雞頭']進(jìn)入以下操作
通過(guò)names.index()的方法返回第2個(gè)eva的索引值
把以上的列表通過(guò)切片的形式實(shí)現(xiàn)反轉(zhuǎn)
打印列表中所有下標(biāo)為奇數(shù)的值?
通過(guò)names.index()方法找到第2個(gè)eva值 ,并將其改成EVA
編程練習(xí)-購(gòu)物車(chē)程序開(kāi)發(fā)
根據(jù)以下數(shù)據(jù)結(jié)構(gòu):
goods = [
{"name": "電腦", "price": 1999},
{"name": "鼠標(biāo)", "price": 10},
{"name": "游艇", "price": 20},
{"name": "美女", "price": 998},
......
]
實(shí)現(xiàn)功能要求:
1、啟動(dòng)程序后,讓用戶(hù)輸入工資,然后進(jìn)入循環(huán),打印商品列表和編號(hào)
2、允許用戶(hù)根據(jù)商品編號(hào)選擇商品
3、用戶(hù)選擇商品后,檢測(cè)余額是否夠,夠就直接扣款,并加入購(gòu)物車(chē), 不夠就提醒余額不足
4、可隨時(shí)退出,退出時(shí),打印已購(gòu)買(mǎi)商品和余額