Python Learning-列表

列表由一系列按特定順序排列的元素的對(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-列表的更多操作

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末悯舟,一起剝皮案震驚了整個(gè)濱河市担租,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌图谷,老刑警劉巖翩活,帶你破解...
    沈念sama閱讀 216,324評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異便贵,居然都是意外死亡菠镇,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門承璃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)利耍,“玉大人,你說(shuō)我怎么就攤上這事“妫” “怎么了程癌?”我有些...
    開(kāi)封第一講書人閱讀 162,328評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)轴猎。 經(jīng)常有香客問(wèn)我嵌莉,道長(zhǎng),這世上最難降的妖魔是什么捻脖? 我笑而不...
    開(kāi)封第一講書人閱讀 58,147評(píng)論 1 292
  • 正文 為了忘掉前任锐峭,我火速辦了婚禮,結(jié)果婚禮上可婶,老公的妹妹穿的比我還像新娘沿癞。我一直安慰自己,他們只是感情好矛渴,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,160評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布椎扬。 她就那樣靜靜地躺著,像睡著了一般具温。 火紅的嫁衣襯著肌膚如雪蚕涤。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 51,115評(píng)論 1 296
  • 那天铣猩,我揣著相機(jī)與錄音钻趋,去河邊找鬼。 笑死剂习,一個(gè)胖子當(dāng)著我的面吹牛蛮位,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播鳞绕,決...
    沈念sama閱讀 40,025評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼失仁,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了们何?” 一聲冷哼從身側(cè)響起萄焦,我...
    開(kāi)封第一講書人閱讀 38,867評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎冤竹,沒(méi)想到半個(gè)月后拂封,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,307評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鹦蠕,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,528評(píng)論 2 332
  • 正文 我和宋清朗相戀三年冒签,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片钟病。...
    茶點(diǎn)故事閱讀 39,688評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡箱季,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出今阳,到底是詐尸還是另有隱情,我是刑警寧澤朴读,帶...
    沈念sama閱讀 35,409評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站走趋,受9級(jí)特大地震影響衅金,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜簿煌,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,001評(píng)論 3 325
  • 文/蒙蒙 一典挑、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧啦吧,春花似錦、人聲如沸拙寡。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,657評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)肆糕。三九已至般堆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間诚啃,已是汗流浹背淮摔。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,811評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留始赎,地道東北人和橙。 一個(gè)月前我還...
    沈念sama閱讀 47,685評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像造垛,于是被迫代替她去往敵國(guó)和親魔招。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,573評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容