列表

列表是什么

列表是由一系列按特定順序排列的元素組成,在python中使用[]括號(hào)來表示列表,并用逗號(hào)來分隔其中的元素。

例:

heros??=?['an琪拉',"魯班7號(hào)","亞瑟"]

print(heros)

訪問列表元素

列表是有序集合,因此要訪問列表的任何元素,只需要將元素的位置或索引告訴python即可,,要訪問列表元素,可以指定列表名稱,再指出元素的索引,將其放在方括號(hào)內(nèi)。

例:

heros??=?['an琪拉',"魯班7號(hào)","亞瑟"]

print(heros[0])

#訪問列表元素的語法,當(dāng)你請(qǐng)求列表元素時(shí),python返回該元素,但是不包括括號(hào)和引號(hào)。

還可以使用之前學(xué)到的轉(zhuǎn)換字符串大小寫,用來格式化;

例:

heros??=?['an琪拉',"魯班7號(hào)","亞瑟"]

print(heros[0].title())#首字母進(jìn)行了大寫

索引是從0開始而不是1

在python中,第一個(gè)列表元素的索引為0,而不是1。在大多數(shù)編程語言中都是如此,這與列表操作的底層實(shí)現(xiàn)相關(guān)。

第二個(gè)列表元素的索引為1,根據(jù)這種簡(jiǎn)單的計(jì)數(shù)方式,要訪問任何元素,都可以在其位置減1,并將結(jié)果作為索引。例:要訪問第4個(gè)元素,使用的索引為3。

例:

heros??=?['an琪拉',"魯班7號(hào)","亞瑟",'蘭陵王']

print(heros[3])

python為訪問最后一個(gè)元素提供了特殊的語法??梢酝ㄟ^負(fù)索引,來返回列表的最后一個(gè)元素。

例:返回最后一個(gè)元素

heros??=?['an琪拉',"魯班7號(hào)","亞瑟",'蘭陵王']

print(heros[-1])

print(heros[-2])#返回倒數(shù)第二個(gè)元素,以此類推

使用列表中的各個(gè)值

可以像使用其他變量一樣使用列表中的各個(gè)值。例如,你可以使用拼接根據(jù)列表中的值來創(chuàng)建消息。

例:

heros??=?['an琪拉',"魯班7號(hào)","亞瑟",'蘭陵王']

message7?=?'?是新手很喜歡的英雄'

print(heros[-1]?+?message7)


練習(xí):

#練習(xí)20?將一些朋友的姓名存儲(chǔ)在一個(gè)列表中,將其命名為names?依次訪問列表中的每個(gè)元素,

#?從而將每個(gè)朋友姓名依次打印出來

names?=?['jack','luse','li','may']

print(names[0],names[1],name[2],name[3])

#練習(xí)21?問候語,繼續(xù)使用姓名列表,

#?但是不打印每個(gè)人的姓名,而是給每個(gè)人打印一條消息。每條消息都包含相同的問候語

names?=?['jack','luse','li','may']

print(names[0]?+??'?新年快樂')

print(names[1]?+??'?新年快樂')

print(names[2]?+??'?新年快樂')

print(names[3]?+??'?新年快樂')

#練習(xí)22?自己的列表,想想自己喜歡的通勤方式,例如騎摩托車或者開汽車,

#?并創(chuàng)建一個(gè)包含多種通勤方式的列表,根據(jù)該列表打印一個(gè)有關(guān)通勤方式的宣言

commuting_mode?=?['drive?a?car','Cycling'?,'run']

print(commuting_mode[0]?+?'?時(shí)間最短')

print(commuting_mode[1]?+?'?速度第二')

print(commuting_mode[2]?+?'?速度最慢')



修改、添加、刪除元素

修改列表元素

修改列表元素與訪問列表元素語法類似。要修改的列表元素,可以指定列表名和要修改的元素索引,再指定該元素的新值。

例:

heros?=?['安琪拉','亞瑟','李白']

heros[0]?=?'魯班'

print(heros)#此時(shí)輸出結(jié)果,列表的第一個(gè)元素變成了魯班

在列表末尾添加元素

在列表中添加新元素時(shí),最簡(jiǎn)單的方式是將元素附加到列表末尾。給列表附加元素時(shí),默認(rèn)添加到列表末尾。

例:

heros?=?['安琪拉','亞瑟','李白']

heros.append('項(xiàng)羽')

print(heros)#此時(shí)輸出,可以看到項(xiàng)羽被添加到列表的最后


創(chuàng)建一個(gè)空列表, 將元素全部添加到列表中

例:

heros = []

heros.append('鐘馗','虞姬','阿古朵','司空震')

print(heros)#此時(shí)報(bào)錯(cuò)ypeError: list.append() takes exactly one argument (4 given),因?yàn)閍ppend一次只能添加一個(gè)元素

修改后:

heros?=?[]

heros.append('鐘馗')

heros.append('司空震')

heros.append('阿古朵')

heros.append('虞姬')

print(heros)

在列表中插入元素

使用方法insert()可以在任何位置添加新元素。為此,需要指定新元素的索引值。

例:

heros?=?['安琪拉','亞瑟','李白']

heros.insert(1,'孫斌')

print(heros)#此時(shí)輸出,索引1變成了孫斌,其他元素向右移了一位

從列表中刪除元素

●使用del語句刪除元素

知道刪除的元素在列表中的位置,可以使用del語句刪除

例:

heros?=?['安琪拉','亞瑟','李白']

del?heros[0]

print(heros)

注意:使用del刪除元素后,就無法再訪問到元素了

●使用方法pop()彈出元素

如果想把元素從列表中刪除,但是還需要使用它的值,可以使用pop方法進(jìn)行刪除,默認(rèn)刪除列表最后一個(gè)元素。

因?yàn)榱斜砭拖袷且粋€(gè)棧,刪除列表末尾的元素相當(dāng)于彈出棧頂元素。

例:

heros?=?['安琪拉','亞瑟','李白']

heros_pop?=?heros.pop()#刪除的元素可以賦值給新的變量

print(heros_pop)

彈出列表中的任何位置的元素

在pop()方法中指定元素的索引即可彈出任何位置的元素

例:

heros?=?['安琪拉','亞瑟','李白']

heros.pop(1)#彈出列表第2個(gè)元素

print(heros)

通過事例,我們可以根據(jù)使用場(chǎng)景,選擇刪除元素,還是彈出元素。

根據(jù)值刪除元素

有時(shí)候,我們不知道列表中要?jiǎng)h除元素的位置,只知道要?jiǎng)h除的元素??梢允褂?b>remove()方法。

例:

heros?=?['安琪拉','亞瑟','李白']

heros.remove('李白')

print(heros)#可以看到元素值為李白的元素被刪除

注意:

?remove方法也是彈出,彈出后的值可以存儲(chǔ)到變量中。

?remove只能刪除一次,如果列表中出現(xiàn)多次要?jiǎng)h除的值,需要循環(huán)刪除。

練習(xí):

#練習(xí)31??如果你可以邀請(qǐng)任何人一起共進(jìn)晚餐,你邀請(qǐng)那些人?請(qǐng)創(chuàng)建一個(gè)列表,其中包含3個(gè)你要邀請(qǐng)的人,

#?然后使用這個(gè)列表打印消息,邀請(qǐng)這些人來與你共進(jìn)晚餐

names?=?[]

names.append('老王')

names.append('老張')

names.append('老李')

print(names)

print(names[0]?+?'?來吃飯')

print(names[1]?+?'?來吃飯')

print(names[2]?+?'?來吃飯')

print(names[0]?+?'?有事兒,不能來吃飯')

#練習(xí)32?修改要求嘉賓名單,你剛得知有一個(gè)嘉賓無法參加,因此需要邀請(qǐng)另一位。

#?修改邀請(qǐng)名單?將無法參加的嘉賓,更換

#?再打印一次邀請(qǐng)

names[0]?=?'老吳'

print(names[0]?+?'?來吃飯')

print(names[1]?+?'?來吃飯')

print(names[2]?+?'?來吃飯')

print('找到了一個(gè)大的餐桌,所以可以再來三個(gè)人')

#練習(xí)33?得到消息,有了一個(gè)大的包間,還可以再邀請(qǐng)3位

names.insert(0,'老劉')#老劉在第一位

names.insert(0,'老錢')#老錢在最新的人前

names.append('老趙')#老趙最后

print(names[0]?+?'?來吃飯')

print(names[1]?+?'?來吃飯')

print(names[2]?+?'?來吃飯')

print(names[3]?+?'?來吃飯')

print(names[4]?+?'?來吃飯')

print(names[5]?+?'?來吃飯')

print('因?yàn)槭巢牟蛔?,只能邀?qǐng)兩人了')

#練習(xí)34?縮減名單,因?yàn)樾沦徺I的食材不足?

#?在33練習(xí)后,打印一條消息,只能邀請(qǐng)兩人用餐。

#?使用pop不斷的彈出嘉賓,直到剩下兩人,每次彈出消息都要發(fā)送抱歉

a=?names.pop()

print(a?+?'抱歉')

b?=?names.pop()

print(b?+?'抱歉')

c?=?names.pop()

print(c?+?'抱歉')

d?=?names.pop()

print(d?+?'抱歉')

#對(duì)于剩下的兩位,每一位打印一條消息

print(names[0]+?'?來吃飯')

print(names[1]?+?'?來吃飯')

#使用del將最后兩位嘉賓,程序結(jié)束時(shí),名單為空

del?names[0]

del?names[0]

print(names)

組織列表

在創(chuàng)建列表中,元素的順序是無法預(yù)測(cè)的,所以需要對(duì)列表進(jìn)行排序。

使用sort()方法對(duì)列表進(jìn)行永久排序

python中的sort()方法可以對(duì)列表進(jìn)行排序。

例如:

我們有一個(gè)英雄列表,想讓英雄按照字母進(jìn)行排序

heros?=?['ya瑟','an琪拉','zhong馗','lu班']

print(heros)

heros.sort()

print(heros)

print(heros)

注意:sort()方法是永久排序

也可以使用sort()方法進(jìn)行倒敘,sort()方法提供了reverse=True。

heros?=?['ya瑟','an琪拉','zhong馗','lu班']

print(heros)

heros.sort(reverse=True)

print(heros)

print(heros)


使用函數(shù)sorted()對(duì)列表進(jìn)行臨時(shí)排序

要保留列表元素原來的排列順序,可以使用函數(shù)sorted()。

例:

heros?=?['ya瑟','an琪拉','zhong馗','lu班']

print(sorted(heros))

print(heros)#原始列表順序未更改

sorted()方法也支持倒敘,可以傳入reverse=True

倒著打印列表

想要反轉(zhuǎn)列表元素的排列順序,可以使用reverse()

例:

heros?=?['ya瑟','an琪拉','zhong馗','lu班']

print('原始數(shù)據(jù)',heros)

heros.reverse()

print(heros)

注意:reverse()方法不是按照字母進(jìn)行排序,而是直接將列表倒過來

確定列表的長度

使用函數(shù)len()方法,可以快速獲取列表的長度。

heros?=?['ya瑟','an琪拉','zhong馗','lu班']

print(len(heros))#可以看到輸出元素長度為4

注意:len()方法的計(jì)算是從1開始,所以不需要 +1?

練習(xí):

#放眼世界,想出5個(gè)想要去的國家

#將這些國家放在一個(gè)列表中,并確保國家不是按照字母順序排列的

countrys?=?['U.S.A',?'Germany','U.S','Japan','India']

#按原始排序打印該列表,不要考慮輸出是否整潔

print(countrys)

#使用sorted()安字母順序打印這個(gè)列表,同時(shí)不要修改它

print(sorted(countrys))

#再次打印該列表,核實(shí)排列順序未變

print(countrys)

#使用sorted()按照字母順序相反的順序打印這個(gè)列表,同時(shí)不要修改它

print(sorted(countrys,reverse=True))

#再次打印該列表,核實(shí)排列順序未改變

print(countrys)

#使用reverse()方法修改列表元素排列順序,打印該列表,核實(shí)排列順序改變

countrys.reverse()

print(countrys)

#再使用reverse()方法修改元素排列順序,打印該列表,核實(shí)已經(jīng)恢復(fù)到原來的排列順序

countrys.reverse()

print(countrys)

#使用sort()修改該列表,使其元素按照字母順序排列,打印該列表,核實(shí)排列順序確實(shí)變了

countrys.sort()

print(countrys)

#使用sort()修改該列表,使其元素按照與字母順序相反的順序排列,打印該列表,核實(shí)排列順序確實(shí)變了

countrys.sort(reverse=True)

print(countrys)

擴(kuò)展:

嘗試用各個(gè)函數(shù),儲(chǔ)存到列表,如:山丘,河流,城市,美食,或是你喜歡的任何東西,要求使用所有學(xué)到的函數(shù)來處理這個(gè)列表。

操作列表

你已經(jīng)學(xué)習(xí)了操作列表中的元素,現(xiàn)在你可以學(xué)習(xí)如何遍歷整個(gè)列表,這樣只需要幾行代碼,無論多長的列表,都能高效的處理。

遍歷整個(gè)列表

現(xiàn)在我們使用for循環(huán)進(jìn)行遍歷列表。

例:

countrys?=?['U.S.A',?'Germany','U.S','Japan','India']

for?country?in?countrys:

????print(country)

深入研究循環(huán)

理解循環(huán)的概念很重要,因?yàn)樗怯?jì)算機(jī)自動(dòng)完成重復(fù)工作的常見方式之一。

countrys?=?['U.S.A',?'Germany','U.S','Japan','India']

for?country?in?countrys:#這行代碼讓python獲取列表countrys中的第一個(gè)值,并把值存儲(chǔ)到變量country中,

????print(country)#然后python讀取代碼,后續(xù)依次執(zhí)行

在for循環(huán)中執(zhí)行更多的操作

在for循環(huán)中,可以對(duì)每個(gè)元素執(zhí)行任何操作??梢园嗌傩写a都可以,for循環(huán)對(duì)于執(zhí)行多個(gè)元素的列表很好用。

例:

countrys?=?['U.S.A',?'Germany','U.S','Japan','India']

for?country?in?countrys:

????print(country.lower()?+?'是美麗的國家')

在for 循環(huán)之后要做的操作

for循環(huán)之后怎么做什么?通常我們進(jìn)行總結(jié)性的輸出或者接著執(zhí)行程序晚期必須完成的任務(wù)。

for 循環(huán)后面,沒有縮進(jìn)的代碼,只執(zhí)行一遍,不會(huì)進(jìn)行重復(fù)執(zhí)行。

例:

heros = ["李白","安琪拉","鐘馗",'亞瑟']

for i in heros:

print(i)

print('爭(zhēng)取早日上王者吧')#可以看到,放在for循環(huán)之外的代碼,執(zhí)行了一遍

避免縮進(jìn)錯(cuò)誤

●對(duì)于for循環(huán)之后的語句屬于for循環(huán)的部分代碼,一定要縮進(jìn),如果你忘記了縮進(jìn)會(huì)報(bào)錯(cuò):

IndentationError: expected an indented block

●但是,也會(huì)出現(xiàn)沒有縮進(jìn),但是程序沒有報(bào)錯(cuò)的情況,但是這時(shí)的輸出,可能不是你想要的結(jié)果。出現(xiàn)了邏輯錯(cuò)誤。

●如果你把不必要縮進(jìn)的代碼,放在了for循環(huán)內(nèi),也會(huì)導(dǎo)致邏輯錯(cuò)誤。

●for循環(huán)后,需要是用:號(hào)結(jié)尾,然后下一行編寫要循環(huán)的代碼。

創(chuàng)建數(shù)值列表

使用函數(shù)range()

python提供了range()函數(shù),可以讓我們輕松生成一系列的數(shù)字。

例:

for i in range(10):

print(i)

使用range()方法生成數(shù)字列表

要?jiǎng)?chuàng)建數(shù)字列表,可以使用list()方法。將range()的結(jié)果轉(zhuǎn)換為列表。將range()作為list()的參數(shù),輸出為一個(gè)數(shù)字列表。

例:

num_list?=?list(range(10))

print(num_list)


使用range()函數(shù)時(shí),可以指定步長。

例:

for?i?in?range(0,10,2):#循環(huán)生成0-10,步長為2的數(shù)值

????print(i)


range()方法幾乎可以實(shí)現(xiàn)所有的數(shù)值列表。

例:創(chuàng)建一個(gè)1-10的平方的數(shù)值,python中**代表乘方運(yùn)算

num_power?=?[]

for?i?in?range(1,11):

????num?=?i**2

????num_power.append(num)

print(num_power)

對(duì)于數(shù)字列表執(zhí)行簡(jiǎn)單的統(tǒng)計(jì)計(jì)算

python提供了內(nèi)置函數(shù),可以輕松的計(jì)算出數(shù)字列表的最大值,最小值,總和。

例:

#求和

nums?=?[100,232,321,11,123]

print(sum(nums))

#求最大

print(max(nums))

#求最小

print(min(nums))

列表推導(dǎo)式(列表解析)

我們通過前面的例子,已經(jīng)可以使用3、4行代碼去生成我們想要的數(shù)值列表,這里作為提升,我們介紹一下列表推導(dǎo)式,它可以使用一行代碼讓我們完成需要的任務(wù)。

例:我們需要生成1-10的乘方數(shù)字

num_power?=??[i?**?2?for?i?in?range(1,11)?]?

print(num_power)

語法解析:

首先我們需要,使用一個(gè)列表名,然后指定一個(gè)左[,并定義一個(gè)表達(dá)式,用于我們需要存儲(chǔ)到列表中的值,這個(gè)例子中,是i**2 求值得平方。然后編寫一個(gè)for循環(huán)用于給表達(dá)式提供數(shù)值,最后加上右]作為結(jié)尾

注意:●這里的for循環(huán)沒有:結(jié)尾

●推到是需要多加練習(xí),可以提升你的代碼效率

練習(xí):

#數(shù)到20:使用一個(gè)for?循環(huán)打印數(shù)字1-20(含)

for?i?in?range(1,21):

????print(i)

#創(chuàng)建一個(gè)列表,其中包含數(shù)字1-100000在使用一個(gè)for循環(huán)將這些數(shù)字打印出來

nums?=?list(range(1,100001))

print(nums)

#創(chuàng)建一個(gè)列表,包含數(shù)字1-100000.再用min?max核實(shí)開頭和結(jié)尾是1和100000?sum求出和

nums1?=?list(range(1,100001))

print(min(nums1))

print(max(nums1))

print(sum(nums1))

#通過函數(shù)range()方法,計(jì)算1-20奇數(shù)?再使用for循環(huán)打印

for?a?in?range(1,21,2):

????print(a)

#創(chuàng)建一個(gè)列表,包含3-30內(nèi)能被3整除的數(shù)字,使用for循環(huán)打印

nums_ji?=[]

for?n?in??range(3,31):

????if?n?%?3?==?0:

????????nums_ji.append(n)

print(nums_ji)

#一個(gè)數(shù)字乘3次被稱為立方,Python中使用**3表示,創(chuàng)建一個(gè)列表包含前1-10的立方,使用for循環(huán)打印

for?i?in?range(1,11):

????i??=?i**3

????print(i)

#使用列表解析生成列表,包含1-10的立方

nums1_li?=?[i**3?for?i?in?range(1,11)?]

print(nums1_li)

使用列表的一部分

在工作中,如果我們只需要使用列表的一部分內(nèi)容,我們處理這部分的內(nèi)容被稱為列表的切片

切片

創(chuàng)建要切片的列表,可以使用第一個(gè)元素和最后一個(gè)元素的索引。與range()函數(shù)一樣,例如要輸出0-2的元素,值為0、1、2。

例:

heros = ['李白','孫尚香','后裔','白起']

print(heros[0:2])

●如果沒有指定索引[:],python會(huì)從開頭切到結(jié)尾

●如果想要最后3個(gè)元素,可以使用負(fù)值 [-3:0]

●切片之后的數(shù)據(jù)類型是list

遍歷切片

可以使用for循環(huán)進(jìn)行切片后進(jìn)行元素遍歷

例:

heros = ['李白','孫尚香','后裔','白起']

print(heros[:])

print(type(heros[:]))#可以看到切片后的類型是list

for hero in heros[-3:]:

print(hero)

復(fù)制列表

如果使用列表的過程中,我們需要?jiǎng)?chuàng)建全新的列表,可以使用切片,起第一個(gè)元素始最后一個(gè)元素。

例:

heros = ['李白','孫尚香','后裔','白起']

heros_new = heros[:]

print(heros_new)

heros.append('孫斌')#為了證明我們現(xiàn)在有兩個(gè)列表,向原始列表添加新的元素

print(heros)

print(heros_new)#復(fù)制的列表沒有新元素




頂頂頂

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一 認(rèn)識(shí)列表 1.什么是列表列表(list) 列表是python內(nèi)置的可變并且有序的容器類數(shù)據(jù)類型(序列) 有序:...
    Fly_withbird閱讀 281評(píng)論 0 1
  • 容器類型:列表和元組 數(shù)據(jù)收納盒 用來收納數(shù)據(jù)對(duì)象的數(shù)據(jù)類型 以一種規(guī)則的下標(biāo)索引方式(收納盒名字+ 數(shù)字序號(hào))訪...
    大象信步走來閱讀 344評(píng)論 0 0
  • day4 - 數(shù)字和列表 數(shù)字 python中和數(shù)字相關(guān)的類型:int(整型)、float(浮點(diǎn)型)、bool(布...
    y_j楊健閱讀 445評(píng)論 0 0
  • 1、什么是列表 列表格式:列表名稱 賦值符 [元素1,元素2,...] ,注意,列表中的所有下標(biāo)都是從0開始,列...
    水調(diào)歌頭_f072閱讀 703評(píng)論 0 0
  • 列表是python以及其他語言中最常用到的數(shù)據(jù)結(jié)構(gòu)之一。Python中使用[]來創(chuàng)建列表 列表中的每項(xiàng)是可以改變的...
    為什么被使用啊啊啊閱讀 292評(píng)論 0 0

友情鏈接更多精彩內(nèi)容