python編程入門之四:列表

第四章 列表

4.1 創(chuàng)建一個列表

我們之前學(xué)過c語言的同學(xué)都知道一個數(shù)據(jù)類型叫做數(shù)組,但是數(shù)組有一個硬性的要求幕帆,就是數(shù)組內(nèi)的數(shù)據(jù)類型必須一致,但由于python沒有數(shù)據(jù)類型,所以python便加入了一個強(qiáng)大的列表各薇,并且?guī)缀蹩梢韵蚶镒⑷肴魏晤愋偷脑亍?br> 列表的創(chuàng)建其實(shí)很簡單,只需要定義一個列表變量然后將任何數(shù)據(jù)通過 "[ ] "的形式括起來賦給變量就可以了君躺,像這樣峭判。

# 這個列表內(nèi)只有數(shù)字
list1 = [1, 2, 3, 4, 5]
# 但這個列表內(nèi)有多種類型,有數(shù)字棕叫,字符串林螃,甚至還可以是一個列表
list2 = [1, 2, 3, "Hopes", [1, 2, 3]]
# 當(dāng)然,也可以先建一個空列表俺泣,以便以后對它進(jìn)行操作
empty = []

將這段代碼錄入到pycharm疗认,然后運(yùn)行一下試試完残。

4.2 列表中添加元素

列表是可操作的,并且操作起來十分靈活横漏,并且在以后的學(xué)習(xí)中列表也是不可或缺的部分谨设,列表常用的操作包括:元素的添加,刪除绊茧,獲取铝宵,修改,查詢华畏。鹏秋。。并且列表還有很多的BIF也就是方法亡笑,下面我們一一介紹.
如果我們想要向列表中添加一個元素侣夷,我們就會用到一個BIF----append()方法

# 首先定義一個列表,并賦初始元素值
number = [1, 2, 3, 4]
# 用append方法向其添加元素
number.append(5)
# 打印輸出
print(number)

結(jié)果:

[1, 2, 3, 4, 5]

我們之前講到過一個叫做BIF的東西仑乌,我們說過它是python的內(nèi)置方法百拓,可以直接調(diào)用,在這里我們可以看出晰甚,方法可以直接通過 " .BIF() "的方式調(diào)用衙传。但是我們會發(fā)現(xiàn),并不能通過append方法同時添加多個元素厕九,不妨試一下如果加入多個元素會不會出錯:

number = [1, 2, 3, 4]
number.append(5, 6)

試過了沒有蓖捶?是不是報錯了這樣的內(nèi)容:

TypeError: appen() takes exactly one argument( 2 given)

意思是append方法只能傳入一個值,而這里傳入了兩個扁远,所以肯定會報錯俊鱼。
那我們?nèi)绻胍淮涡约尤攵鄠€元素呢?當(dāng)然是有辦法的畅买,這里我們就用到了一個extend方法并闲,extend即為拓展的意思,不同于append添加谷羞,它可以將一個列表拓展進(jìn)另一個列表帝火,什么意思呢?看下面的代碼:

number = [1, 2, 3, 4]
number.extend([5, 6, 7])
print(number)

運(yùn)行一下湃缎,結(jié)果:

[1 ,2 , 3, 4, 5, 6, 7]

是不是將列表[5, 6, 7]拓展進(jìn)了列表[1, 2, 3, 4]中购公,但是一定要記住,extend內(nèi)只能是一個列表雁歌,而不能是單獨(dú)的元素,否則也會報錯知残。

number.extend(5, 6, 7)   # 錯誤
number.extend([5, 6, 7])   # 正確

但是這兩個添加都存在一個問題:我們只能向整個列表的后面添加靠瞎,但是如果我想向某個位置插入一個元素該怎么辦比庄?這里我們再介紹一個向列表中插入元素的方法:insert方法。

number = [0, 1, 3, 4, 5, 6]
number.insert(3, 2)
print(number)

結(jié)果:

[0, 1, 2, 3, 4, 5, 6]

是不是將3插入到第2個元素的位置了呢乏盐?你如果問:第二個佳窑?我數(shù)著是第三個啊父能?神凑。。何吝。那你可就要注意了溉委,所以有的機(jī)器語言中,都是從0開始數(shù)的爱榕,再數(shù)一遍瓣喊,是不是第二個了?所以黔酥,insert()中可傳入兩個參數(shù)藻三,insert(3, 2) .3代表要插入的元素,2代表要插入的位置跪者,是不是很簡單棵帽,還是錄入代碼嘗試一下吧。

4.3 元素的獲取

在python列表中的每個元素渣玲,都有著屬于自己的索引值逗概,這個索引值就相當(dāng)于每個班級學(xué)生的序號,相互之間一一對應(yīng)柜蜈,那么所以說仗谆,我們就可以通過索引的方式來獲取我們需要的某個位置上的元素,如下:

# 定義一個列表淑履,里面放著四個同學(xué)的名字
name = ["Hopes", "Alex", "Demo", "Harry"]

# 我們想要序號為1的同學(xué)的名字
stu1 = name[1]
print(stu1)

# 接著是序號為3的同學(xué)的名字
stu3 = name[3]
print(stu3)

結(jié)果:

Alex
Harry

是不是很easy隶垮,只需要在列表變量名后的" [ ] "內(nèi)輸入你想提取出來的元素的序號,就可以獲取相應(yīng)的元素秘噪。
但是有同學(xué)會問狸吞,如果我知道序號想提取序號對應(yīng)的元素可以用這種方式,那么如果我知道某個元素的內(nèi)容指煎,是不是也可以得到它的位置呢蹋偏?答案是肯定的,python是不會放過任何的細(xì)節(jié)的至壤,接下來我們了解一下是怎樣獲取索引值的威始。

4.5 元素的索引值

如果我們想要得到某個元素的索引值,或者說是它的位置像街,我們就需要用到另一個BIF黎棠,即index方法晋渺,index本身就就是索引的意思,所以這里理所當(dāng)然的也由它承擔(dān)這份責(zé)任脓斩,我們來看一下是怎樣使用的吧木西。

# 同樣定義一個包含四個名字的列表
name = ["Hopes", "Alex", "Demo", "Harry"]

# 獲取"Hopes"同學(xué)的位置
loc1 = name.index("Hopes")
print(loc1)

# 獲取"Demo"同學(xué)的位置
loc2 = name.index("Demo")
print(loc2)

結(jié)果:

0
2

怎么樣,很簡單吧随静,錄入一下代碼試試吧八千。

4.4 元素的替換

既然我們已經(jīng)學(xué)會了元素的獲取,那么理解元素的替換并不難燎猛,因?yàn)槿绻覀円鎿Q某個元素恋捆,就必須先獲取到它,所以元素的替換其實(shí)也相當(dāng)于一個元素的重新“賦值”扛门,看看下面的例子吧鸠信。

name = ["Hopes", "Alex", "Demo", "Harry"]

# 我們將Alex同學(xué)替換成Faker同學(xué)
name[1] = "Faker"

# 然后將Harry同學(xué)替換成Uzi同學(xué)
name[3] = Uzi

# 打印輸出
print(name)

結(jié)果:

["Hopes", "Faker", "Demo", "Uzi"]

同樣錄入試一下,學(xué)習(xí)任何一門編程語言都需要不斷地去嘗試去修改论寨,只要堅(jiān)持不懈星立,終有一天可以成為python編程的大牛。

4.6 元素的刪除

我們已經(jīng)學(xué)習(xí)了元素的添加葬凳,獲取绰垂,修改,最后我們學(xué)習(xí)一下關(guān)于元素的刪除火焰,同樣我們介紹常見的刪除元素的三種方法----remove()劲装,del和pop()。
比如我們先學(xué)習(xí)使用remove方式刪除元素:

# 創(chuàng)建一個動物列表
animal = ["mokey", "elephent", "tiger", "snake"]

# 刪除列表中的tiger
animal.remove("tiger")
print(animal)

結(jié)果:

["mokey", "elepent", "snake"]

可以看到昌简,tiger確實(shí)是被刪除了占业,利用remove方式并不需要知道某個元素的具體位置,只要知道元素的內(nèi)容就可以了纯赎,如果刪除一個不存在的元素呢谦疾?你可以試試,它肯定會報錯的犬金,像這樣:

ValueError: list.(x): x not in list

另外如果我只知道某個元素的位置呢念恍?怎么刪除?首先你可以這樣晚顷。

animal = ["mokey", "elephent", "tiger", "snake"]

# 刪除位置為1的元素
animal.remove(animal[1])
print(animal)

很顯然峰伙,這樣是肯定可行的,因?yàn)閍nimal[1]就是位置為1的元素的內(nèi)容该默,但是這樣確實(shí)有點(diǎn)麻煩啊瞳氓,python不是以簡單明了而著稱的嗎?沒錯栓袖,python是絕對不會忘記這點(diǎn)的顿膨,所以下面我們嘗試使用del來刪除某個特定位置的元素锅锨。

animal = ["mokey", "elephent", "tiger", "snake"]

# 刪除第0個元素
del animal[0]
print(animal)

結(jié)果:

["elephent", "tiger", "snake"]

是不是成功的刪除了?但是你會發(fā)現(xiàn)為什么之前用的.remove()方法是放在animal后面且可以傳入一個參數(shù)恋沃,兒del直接放在animal之前了呢?因?yàn)閐el并不是一個list的方法必指,而是一個語句囊咏,如果你想要刪除整個列表,可以通過del加列表名來實(shí)現(xiàn)

animal = ["mokey", "elephent", "tiger", "snake"]

# 刪除animal列表
del animal
print(animal)

結(jié)果:

NameError: name 'animal' is not defined

是不是報錯了塔橡,這也就意味著我們已經(jīng)刪除了animal這個列表梅割。
然后,我們再來介紹一下pop()的刪除方式葛家,這個其實(shí)挺有意思的户辞,因?yàn)樗恰皬棾觥笔降膭h除,并且癞谒,如果pop()不指定參數(shù)底燎,它會默認(rèn)刪除最后位置的元素,還可以制定某個位置來彈出弹砚,先看一下例子双仍。

animal = ["mokey", "elephent", "tiger", "snake"]

# 彈出默認(rèn)位置
animal.pop()
print(animal)

# 彈出第1個元素
animal.pop(1)
print(animal)

結(jié)果:

["mokey", "elephent", "tiger"]
["mokey", "tiger"]

但為什么說它是“彈出”呢?再看下面的代碼桌吃。

animal = ["mokey", "elephent", "tiger", "snake"]

# 彈出默認(rèn)位置
print(animal.pop())
print(animal)

# 彈出第1個元素
print(animal.pop(1))
print(animal)

結(jié)果:

snake
["mokey", "elephent", "tiger"]
elephent
["mokey", "tiger"]

所以看到?jīng)]有朱沃,為什么叫“彈出”?因?yàn)樗趧h除的過程中會給你返回一個要“彈出”的元素茅诱,這樣我們就可以知道我們具體刪除的是哪個元素了逗物,很方便有沒有,錄入代碼自己嘗試一下吧瑟俭。

4.6 列表的切片

我們想到利用索引值可以取出我們需要的元素翎卓,但是我們?nèi)绻淮涡垣@取多個元素呢?這又是一個問題尔当,但是這難不倒我們莲祸,道高一尺魔高一丈,python可以滿足你的任何需求椭迎。這里我們用列表的切片來演示一下一次性多個元素的獲取锐帜。

animal = ["mokey", "elephent", "tiger", "snake"]

# 獲取第0個到第2個元素
print(animal[0: 3])  # 為啥是3呢,因?yàn)榍衅^不包括尾畜号,記住就好

# 當(dāng)然它也可以簡寫成這樣
print(animal[:3]) # 結(jié)果是一樣的

# 而且還可以獲取某個元素之后的所有元素
print(animal[1:])

# 獲取所有的元素
print(animal[:])

結(jié)果:

["mokey", "elephent", "tiger"]
["mokey", "elephent", "tiger"]
["elephent", "tiger", "snake"]

怎么樣缴阎?我們是不是可以以任何方式來獲取元素,下面我們來看一下更高級的切片

# 定義一個包含數(shù)字的列表
num = [1, 2, 3, 4, 5, 6, 7, 8, 9]

# 進(jìn)行步長為2的切片
print(num[0: 9: 2])

# 反轉(zhuǎn)整個列表
print(num[::-1])

結(jié)果:

[1, 3, 5, 7, 9]
[9, 8, 7, 6, 5, 4, 3, 2, 1]

怎么樣是不是很有意思简软,多了解一下列表的切片用法蛮拔,以后會經(jīng)常用的到述暂。

4.7 列表的Partners

我們已經(jīng)學(xué)習(xí)了列表的很多操作方法,比如append建炫,extend畦韭,index,remove肛跌,pop等等艺配,但我們沒有學(xué)到的還有很多,有多少呢衍慎,我們用dir方法來看一下list擁有多少種方法转唉。

dir(list)

結(jié)果:

['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', 
'__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', 
'__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', 
'__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__',
 '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 
 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

是不是很多,是不是感覺我們學(xué)到的東西才冰山一角稳捆,我們先介紹幾種比較常用的方法赠法,其他的我們以后會接觸到。

num = [1, 3, 5, 2, 7, 6, 8, 1, 1]

# count()方法用來獲取某個元素在列表中的出現(xiàn)次數(shù)
print(num.count(1))

# reverse()方法用來反轉(zhuǎn)整個列表
num.reverse()
print(num)

# sort()方法用來排序整個列表
num.sort()
print(num)

結(jié)果:

3
[1, 1, 8, 6, 7, 2, 5, 3, 1]
[1, 1, 1, 2, 3, 5, 6, 7, 8]

這次的內(nèi)容以經(jīng)很多了乔夯,所以大家理解了這些方法之后砖织,不妨再去回頭看看這次的內(nèi)容,溫故而知新可以為師矣嘛驯嘱,所以一定要清楚復(fù)習(xí)的重要性镶苞。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市鞠评,隨后出現(xiàn)的幾起案子茂蚓,更是在濱河造成了極大的恐慌,老刑警劉巖剃幌,帶你破解...
    沈念sama閱讀 223,002評論 6 519
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件聋涨,死亡現(xiàn)場離奇詭異,居然都是意外死亡负乡,警方通過查閱死者的電腦和手機(jī)牍白,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,357評論 3 400
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來抖棘,“玉大人茂腥,你說我怎么就攤上這事∏惺。” “怎么了最岗?”我有些...
    開封第一講書人閱讀 169,787評論 0 365
  • 文/不壞的土叔 我叫張陵,是天一觀的道長朝捆。 經(jīng)常有香客問我般渡,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,237評論 1 300
  • 正文 為了忘掉前任驯用,我火速辦了婚禮脸秽,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蝴乔。我一直安慰自己记餐,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,237評論 6 398
  • 文/花漫 我一把揭開白布薇正。 她就那樣靜靜地躺著剥扣,像睡著了一般。 火紅的嫁衣襯著肌膚如雪铝穷。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,821評論 1 314
  • 那天佳魔,我揣著相機(jī)與錄音曙聂,去河邊找鬼。 笑死鞠鲜,一個胖子當(dāng)著我的面吹牛宁脊,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播贤姆,決...
    沈念sama閱讀 41,236評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼榆苞,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了霞捡?” 一聲冷哼從身側(cè)響起坐漏,我...
    開封第一講書人閱讀 40,196評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎碧信,沒想到半個月后赊琳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,716評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡砰碴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,794評論 3 343
  • 正文 我和宋清朗相戀三年躏筏,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片呈枉。...
    茶點(diǎn)故事閱讀 40,928評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡趁尼,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出猖辫,到底是詐尸還是另有隱情酥泞,我是刑警寧澤,帶...
    沈念sama閱讀 36,583評論 5 351
  • 正文 年R本政府宣布住册,位于F島的核電站婶博,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜凡人,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,264評論 3 336
  • 文/蒙蒙 一名党、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧挠轴,春花似錦传睹、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,755評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至启上,卻和暖如春邢隧,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背冈在。 一陣腳步聲響...
    開封第一講書人閱讀 33,869評論 1 274
  • 我被黑心中介騙來泰國打工倒慧, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人包券。 一個月前我還...
    沈念sama閱讀 49,378評論 3 379
  • 正文 我出身青樓纫谅,卻偏偏與公主長得像,于是被迫代替她去往敵國和親溅固。 傳聞我的和親對象是個殘疾皇子付秕,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,937評論 2 361