在使用Python的時(shí)候,經(jīng)常會(huì)用到列表,列表(list)就是動(dòng)態(tài)數(shù)組,相當(dāng)于C++標(biāo)準(zhǔn)庫的Vector。但不同的是,Python的列表可以存儲(chǔ)多種數(shù)據(jù)類型于一身,非常強(qiáng)大。
下面介紹幾種Python列表的常用用法:
一.列表的創(chuàng)建:
使用[]把數(shù)據(jù)包含起來,便可以創(chuàng)建一個(gè)列表了。
1.[]可以不包含任何數(shù)據(jù),則表示創(chuàng)建一個(gè)空列表
>>>name=[]
2.[]也可以包含多種數(shù)據(jù)類型的數(shù)據(jù)
>>>name=["damao",30,"ermao"]
二.列表的打?。?/p>
1.使用內(nèi)置函數(shù)print()便可打印整個(gè)列表里的數(shù)據(jù)”
>>>print(name)
["damao",30,"ermao"]
2.當(dāng)然也可以打印列表的某個(gè)下標(biāo)的數(shù)據(jù):
>>>print(name[0])
damao
3.也可以分片打印列表的某段下標(biāo)的數(shù)據(jù)
>>>print(name[0:2])
['damao',30]#注意,沒有打印name[2]的數(shù)據(jù):)
4.如果想要分別打印列表里的每個(gè)數(shù)據(jù),只需要一個(gè)for就可以搞定:
>>>foreachinname:
print(each)
damao
30
ermao
5.當(dāng)然也可以直接打印出列表內(nèi)數(shù)據(jù)的個(gè)數(shù):
>>>print(len(name))
3
三、列表的擴(kuò)展:
1.我們可以在列表末尾追加一個(gè)任意數(shù)據(jù)類型數(shù)據(jù):
>>>name.append(["daoluan",666])
>>>print(name)
['damao',30,'ermao',['daoluan',666]]
2.也可以在列表末尾追加一個(gè)列表里的所有數(shù)據(jù):
>>>name.extend(["sanmao",10,"simao"])
>>>print(name)
['damao',30,'ermao',['daoluan',666],'sanmao',10,'simao']
#注意,append和entend這兩個(gè)方法看起來有些類似,但實(shí)際上是不同的。append只接受一個(gè)參數(shù),但是這個(gè)參數(shù)可以是任意數(shù)據(jù)類型,比如列表和元組等,而且只是將這個(gè)數(shù)據(jù)追加到原列表后面獨(dú)立存在。
extend也是只接受一個(gè)參數(shù),不同的是這個(gè)參數(shù)必須是一個(gè)列表,而且會(huì)把這個(gè)列表的每個(gè)元素拆分出來,依次追加到原列表后面。
3.當(dāng)然也可以在指定位置增加一個(gè)任意數(shù)據(jù)類型數(shù)據(jù)(append的既視感):
#第一個(gè)參數(shù)為指定的列表下標(biāo),第二個(gè)參數(shù)為增加的數(shù)據(jù)
>>>name.insert(3,20)
>>>print(name)
['damao',30,'ermao',20,['daoluan',666],'sanmao',10,'simao']
四、列表的刪除:
1.刪除列表末尾的一個(gè)數(shù)據(jù):
>>>name.pop()
>>>print(name)
['damao',30,'ermao',20,['daoluan',666],'sanmao',10]
2.也可以刪除列表指定的某一個(gè)數(shù)據(jù):
>>>name.remove("sanmao")
>>>print(name)
['damao',30,'ermao',20,['daoluan',666],10]
3.或者刪除列表的某個(gè)下標(biāo)的數(shù)據(jù):
>>>del(name[4])
>>>print(name)
['damao',30,'ermao',20,10]
#注意,de()函數(shù)支持列表分片刪除,同樣的,也支持刪除整個(gè)列表。
五、列表的合并:
只需要像I+I+I=III一樣,就可以合并多個(gè)列表:
>>>mao=name+[20,"ermao"]+[30,"damao"]
>>>print(mao)
['damao',30,'ermao',20,10,20,'ermao',30,'damao']
六、列表的排序:
首先,列表里的每個(gè)元素類型相同才可以進(jìn)行排序,對(duì)此我們可以選擇手寫排序算法,也可以選擇Pythoy提供的更簡(jiǎn)便且強(qiáng)大的的方法:sort()和sorted()
1.原地排序:
>>>fruit=["banana","pear","orange","apple"]
>>>fruit.sort()
>>>print(fruit)
['apple','banana','orange','pear']
#sort()方法可以在原列表的基礎(chǔ)上進(jìn)行排序,同時(shí)改變?cè)斜淼捻樞颉?/p>
2.復(fù)制排序:
>>>nums=[23,12,-34,0,101,2]
>>>newNums=sorted(nums)
>>>print(newNums)
[-34,0,2,12,23,101]
>>>print(nums)
[23,12,-34,0,101,2]
#sorted()函數(shù)通過復(fù)制排序可以對(duì)幾乎任何數(shù)據(jù)結(jié)構(gòu)排序,同時(shí)返回一個(gè)新的排序后的數(shù)據(jù)結(jié)構(gòu),而且不會(huì)改變?cè)瓟?shù)據(jù)結(jié)構(gòu)的序列。
#注意,不管使用sort()還是使用sorted(),默認(rèn)都是升序排序。如果想按照降序排序,只要傳入reverse=True參數(shù)就可以啦,比如fruit.sort(reverse=True)或者newNums=sorted(nums,reverse=True)