列表由一系列按特定順序排列的元素的對(duì)象渣聚。它是一種有序的、可擴(kuò)展與收縮的對(duì)象蔬蕊。如果學(xué)過(guò)其它語(yǔ)言结澄,它看起來(lái)有點(diǎn)像數(shù)組,不過(guò)袁串,列表中可以存儲(chǔ)不同類型的對(duì)象
列表用[]
來(lái)表示概而;列表中的元素
用逗號(hào)進(jìn)行分隔
例:定義一個(gè)包含不同類型的自行車列表,并將列表賦值給一個(gè)變量
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
打印這個(gè)列表看看
print(bicycles)
輸出:
['trek', 'cannondale', 'redline', 'specialized']
訪問(wèn)列表元素
因?yàn)榱斜硎?strong>有序的囱修,所有可以通過(guò)索引
來(lái)訪問(wèn)到列表中的元素
列表中元素的索引默認(rèn)從0開(kāi)始
例:從bicycles
列表中取出trek
類型的自行車
print(bicycles[0])
輸出:
treck
treck
在列表中的第一個(gè)位置赎瑰,所以它的索引是0;通過(guò)索引訪問(wèn)元素可在列表名稱后加上方括號(hào)[]
破镰,在括號(hào)中填寫上索引即可
print(bicycles[0].title()) # 將輸出的內(nèi)容開(kāi)頭大寫
輸出:
Treck
請(qǐng)記住餐曼,索引從0開(kāi)始,第1個(gè)元素的索引是0鲜漩,第2個(gè)元素的索引是1源譬,第3個(gè)元素的索引是2,……第n個(gè)元素的索引是n-1
如果索引為-1,可直接訪問(wèn)到最后一個(gè)元素
print(bicycles[-1])
輸出:
specialized
當(dāng)索引值是正數(shù)時(shí)孕似,取值是從左向右取的踩娘;如果索引是負(fù)數(shù)時(shí),取值是從右往左取的喉祭;所以养渴,當(dāng)索引是-2時(shí)雷绢,將得到列表中倒數(shù)第2個(gè)元素
修改、添加和刪除元素
列表不僅是有序的理卑,而且是動(dòng)態(tài)的翘紊,它可以在程序運(yùn)行過(guò)程中添加、修改和刪除其中的元素
修改
例:創(chuàng)建一個(gè)食物列表
foods = ['potato', 'tomato', 'noodles', 'apple']
將第一個(gè)元素potato
修改為banana
foods[0] = 'banana'
print(foods)
輸出:
['banana', 'tomato', 'noodles', 'apple']
通過(guò)foods[0]
訪問(wèn)到了第一個(gè)元素potato
藐唠,再通將'banana'
賦值給該元素帆疟,便完成了修改動(dòng)作
添加
例:在foods
列表中添加一個(gè)新的食物梨pear
foods.append('pear')
print(foods)
輸出:
['banana', 'tomato', 'noodles', 'apple', 'pear']
append()
會(huì)將新元素添加到列表的末尾
如何在指定位置添加(插入)一個(gè)新元素呢?
foods.insert(1, 'peanut')
print(foods)
輸出:
['banana', 'peanut', tomato', 'noodles', 'apple', 'pear']
insert()
方法可以將新元素插入到列表的指定位置宇立,括號(hào)中的1表示要將新元素添加到索引1的位置上踪宠,peanut
表示要插入的新元素花生,相應(yīng)的泄伪,其它元素的位置都會(huì)向右移動(dòng)一個(gè)位置
刪除
例:將foods
列表中的元素peanut
刪掉
del foods[1]
print(foods)
輸出:
['banana', 'tomato', 'noodles', 'apple', 'pear']
del
會(huì)將列表刪除掉殴蓬,如果想刪除某個(gè)元素,可以通過(guò)訪問(wèn)索引的方式來(lái)刪除其中的一個(gè)元素蟋滴,在這里染厅,通過(guò)訪問(wèn)索引1,刪除掉了花生元素
如果這樣寫
del foods
print(foods)
輸出:
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
foods
NameError: name 'foods' is not defined
程序會(huì)報(bào)錯(cuò)津函,因?yàn)?code>del foods將foods對(duì)象從內(nèi)存中刪除掉了肖粮,程序再也找不到它了
使用pop()
將刪除的元素返回
直接看例子:
food = foods.pop()
print(food)
print(foods)
輸出:
pear
['banana', 'tomato', 'noodles', 'apple']
此時(shí),列表中的最后一個(gè)元素不見(jiàn)了尔苦,而變量food
被方賦值了pear
涩馆;pop()
方法會(huì)將列表中最后一個(gè)元素彈出,可以將此時(shí)的列表想象成一個(gè)棧允坚,最后一個(gè)進(jìn)入棧中的元素將會(huì)被彈出魂那,這是一個(gè)后進(jìn)先出模式
彈出列表中任何位置的元素
food = foods.pop(1)
print(food)
print(foods)
通過(guò)在pop()
中指定索引來(lái)彈出指定位置的元素,這里將第2個(gè)元素tomato
彈出稠项,并保存到了變量food
中
請(qǐng)牢記涯雅,當(dāng)使用pop()
彈出一個(gè)元素時(shí),該元素便從列表中消失了
如果知道元素的名稱展运,卻不知道它在列表的什么位置活逆,如何刪除?
此時(shí)可以使用remove()
方法
例:將foods
列表中noodles
元素刪除
foods.remove('noodles')
print(foods)
輸出:
['banana', 'tomato', 'apple']
元素noodles
從列表中被刪除拗胜;remove()
方法接受一個(gè)字符串參數(shù)蔗候,用來(lái)指定要?jiǎng)h除的元素的名稱
如果noodles
元素在列表中出現(xiàn)多次,remove()
只要?jiǎng)h除第一個(gè)匹配到的元素埂软,也就是只會(huì)刪除一次
列表排序
列表雖然是有序的锈遥,但并不代表所有的元素的排序都是合理的,Python提供了排序方法
sort()
可以對(duì)列表進(jìn)行永久性的排序
例:
foods = ['potato', 'tomato', 'noodles', 'apple']
foods.sort()
print(foods)
輸出:
['apple', 'noodles', 'potato', 'tomato']
可以看出,sort()
將foods
列表中的元素按首字母進(jìn)行了排序所灸,這是它針對(duì)字符串默認(rèn)的排序方式
并且儿礼,此后這個(gè)列表將永遠(yuǎn)變成排序后的樣子
將foods
列表中元素按首字母倒序排列
foods.sort(reverse=True)
print(foods)
輸出:
['tomato', 'potato', 'noodles', 'apple']
向sort()
方法傳遞參數(shù)reverse=True
即告訴該方法是否將元素反轉(zhuǎn),也是就是倒序庆寺;默認(rèn)reverse=Fase
,即不倒序
如果不想永久性的改變列表的排序結(jié)構(gòu)诉字,可以使用sorted()
方法
例:
foods = ['potato', 'tomato', 'noodles', 'apple']
print(sorted(foods))
print(foods)
輸出:
['apple', 'noodles', 'potato', 'tomato']
['potato', 'tomato', 'noodles', 'apple']
可以看出懦尝,第一行是排序后的輸出,第二行是原來(lái)的列表壤圃,其內(nèi)容順序并沒(méi)有發(fā)生變化
同樣的陵霉,也可以向sorted()
方法中傳入reverse=True
參數(shù),將列表進(jìn)行倒序
foods = ['potato', 'tomato', 'noodles', 'apple']
print(sorted(foods, reverse=True))
print(foods)
輸出:
['tomato', 'potato', 'noodles', 'apple']
['potato', 'tomato', 'noodles', 'apple']
有時(shí)候伍绳,列表中的元素并不都是小寫字符串踊挠,不家可能有的是數(shù)字有的是字符串,這些情況下的排序是比較復(fù)雜的冲杀,將會(huì)在后面討論
reverse()
函數(shù)可以將列表反轉(zhuǎn)效床,并且只有反轉(zhuǎn)的功能
例:
foods = ['potato', 'tomato', 'noodles', 'apple']
foods.reverse()
print(foods)
輸出:
['apple', 'noodles', 'tomato', 'potato']
注意,reverse()
不是對(duì)列表進(jìn)行排序权谁,而是將原列表進(jìn)行左右反轉(zhuǎn)
reverse()
對(duì)列表的操作是永久性的
查看列表的長(zhǎng)度
foods = ['potato', 'tomato', 'noodles', 'apple']
print(len(foods))
輸出:
4
len()
函數(shù)將返回列表foods
的長(zhǎng)度剩檀,也就是元素的個(gè)數(shù)
注意,如果寫錯(cuò)索引位置旺芽,將會(huì)導(dǎo)致數(shù)據(jù)錯(cuò)誤或系統(tǒng)報(bào)錯(cuò)沪猴,新手常會(huì)現(xiàn)出索引上的問(wèn)題
例:
foods = ['potato', 'tomato', 'noodles', 'apple']
print(foods[4])
foods
列表中最大索引是3,報(bào)錯(cuò)內(nèi)容:
Traceback (most recent call last):
File "C:/Users/Administrator/Desktop/s.py", line 2, in <module>
print(foods[4])
IndexError: list index out of range
附語(yǔ):
Python語(yǔ)句的末尾可以不寫分號(hào)采章,當(dāng)然寫上分號(hào)也是正確的运嗜,為了簡(jiǎn)潔與美觀,一般不會(huì)在語(yǔ)句末尾加分號(hào)
目錄
上一章 Python Learning-變量和簡(jiǎn)單數(shù)據(jù)類型
下一章 Python Learning-列表的更多操作