人生苦短,我學(xué)Python(三)

在上一期人生苦短,我學(xué)Python(二)中睬关,我們簡(jiǎn)單地探討了整數(shù)诱担、浮點(diǎn)數(shù)、字符串电爹、布爾值和空值這幾個(gè)簡(jiǎn)單的數(shù)據(jù)類型蔫仙,變量與常量,條件判斷與函數(shù)(定義與調(diào)用)丐箩。同時(shí)摇邦,在寫個(gè)Python(一)中,我們應(yīng)用之前學(xué)習(xí)到的知識(shí)編寫了一個(gè)通過(guò)輸入身高和體重計(jì)算BMI值的程序屎勘。

接下來(lái)涎嚼,我們還是來(lái)繼續(xù)了解Python中的另外兩種數(shù)據(jù)類型——list和tuple:

list

list是一種有序的集合,可以隨時(shí)添加和刪除其中的元素挑秉。比如,你家里養(yǎng)的寵物的種類就能用一個(gè)list來(lái)表示:

>>> pet = ['cat', 'dog', 'fish', 'turtle']
>>> print(pet)
['cat', 'dog', 'fish', 'turtle']

當(dāng)變量是一個(gè)list類型時(shí)苔货,例如pet犀概,用len()函數(shù)可以就能獲得list中元素的數(shù)量:

>>> len(pet)
3

使用list索引可以訪問(wèn)list中每一個(gè)位置的元素(list的第一個(gè)元素從0開始,最后一個(gè)元素為-1):

#正向索引
>>> pet[0]
'cat'
>>> pet[1]
'dog'
>>> pet[2]
'fish'
>>> pet[3]
'turtle'
>>> pet[4]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range

#逆向索引
>>> pet(-1)
'turtle'
>>> pet(-2)
'fish'

當(dāng)索引超出了范圍時(shí)夜惭,Python會(huì)報(bào)一個(gè)IndexError錯(cuò)誤姻灶,所以,要確保索引不要越界诈茧。另外产喉,list是一個(gè)可變的有序表,所以敢会,可以往list中追加元素到末尾:

>>> pet.append(‘lizard’)
>>> print(pet)
['cat', 'dog', 'fish', 'turtle', 'lizard']

當(dāng)然曾沈,在實(shí)際的運(yùn)用中,僅僅把元素加在list末尾肯定是遠(yuǎn)遠(yuǎn)不夠的鸥昏。沒事兒塞俱,我們還可以把元素加在list中任何你想加的地方:

>>> pet.insert(1, 'python')
>>> print(pet)
['cat', 'python', 'dog', 'fish', 'turtle', 'lizard']

除了能在list中添加元素,我們也可以在list中刪除元素:

>>> pet.pop()
>>> print(pet)
['cat', 'python', 'dog', 'fish', 'turtle', 'lizard']

pop()方法用于刪除list中的元素吏垮,當(dāng)pop()括號(hào)中的參數(shù)為空的時(shí)候障涯,即為刪除list的最后一個(gè)元素。當(dāng)然膳汪,你也可以刪除list的任意你想刪除位置的元素:

>>> pet.pop(1)
'python'
>>> print(pet)
['cat', 'dog', 'fish', 'turtle', 'lizard']

上面說(shuō)了list的增唯蝶、刪、查的方法遗嗽,下面說(shuō)最后一個(gè)——更改list中的某個(gè)元素粘我,其實(shí)就是再次給list中某個(gè)位置的元素賦值,覆蓋該元素之前的值:

>>> pet[1] = 'python'
>>> print(pet)
['cat', 'python', 'fish', 'turtle', 'lizard']

說(shuō)完了list的增刪改查媳谁,下面說(shuō)說(shuō)一些需要注意的地方涂滴。

可能有的朋友已經(jīng)注意到了友酱,我們的pet這個(gè)list所有的元素都是字符串類型,是不是list只支持字符串的類型柔纵?其實(shí)缔杉,list的元素可以支持我們之前說(shuō)到的所有的數(shù)據(jù)類型:

>>> list = ['python', 123, Ture, 123.0]

同時(shí),list的一個(gè)元素也可以是另一個(gè)list搁料,例如:

>>> pet = ['cat', 'python', 'fish', 'turtle', 'lizard']
>>> animal = ['pig', 'cow', pet]

此時(shí)或详,想要索引到'python'可以寫pet[1]或者animal[2][1]因此animal可以看成是一個(gè)二維數(shù)組,類似的還有三維郭计、四維……數(shù)組霸琴,不過(guò)很少用到。

另外昭伸,如果一個(gè)list中一個(gè)元素也沒有梧乘,那么他就是一個(gè)空的list,長(zhǎng)度為0:

>>> empty = []
>>> len(empty)
0

tuple

另一種有序列表叫元組:tuple庐杨。tuple和list非常類似选调,但是tuple一旦初始化就不能修改,比如同樣是列出你家里養(yǎng)的寵物的種類:

>>> pet = ('cat', 'dog', 'fish')

現(xiàn)在灵份,pet這個(gè)tuple不能變了仁堪,它也沒有append()insert()這樣的方法填渠。其他獲取元素的方法和list是一樣的弦聂,你可以正常地使用pet[0]pet[-1]氛什,但不能賦值成另外的元素莺葫。換句話說(shuō),tuple就是只有“查”這一個(gè)功能的list枪眉,沒有l(wèi)ist的“增”徙融、“刪”、“改”的功能瑰谜。

不可變的tuple有什么意義欺冀?因?yàn)閠uple不可變,所以代碼更安全萨脑。如果可能隐轩,能用tuple代替list就盡量用tuple。

tuple的陷阱:當(dāng)你定義一個(gè)tuple時(shí)渤早,在定義的時(shí)候职车,tuple的元素就必須被確定下來(lái),比如:

>>> t = (1, 2)
>>> t
(1, 2)

如果要定義一個(gè)空的tuple,可以寫成()

>>> t = ()
>>> t
()

但是悴灵,要定義一個(gè)只有1個(gè)元素的tuple扛芽,如果你這么定義:

>>> t = (1)
>>> t
1

定義的不是tuple,是1這個(gè)數(shù)积瞒!這是因?yàn)槔ㄌ?hào)()既可以表示tuple川尖,又可以表示數(shù)學(xué)公式中的小括號(hào),這就產(chǎn)生了歧義茫孔,因此叮喳,Python規(guī)定,這種情況下缰贝,按小括號(hào)進(jìn)行計(jì)算馍悟,計(jì)算結(jié)果自然是1

所以剩晴,只有1個(gè)元素的tuple定義時(shí)必須加一個(gè)逗號(hào),锣咒,來(lái)消除歧義:

>>> t = (1,)
>>> t
(1,)

Python在顯示只有1個(gè)元素的tuple時(shí),也會(huì)加一個(gè)逗號(hào),赞弥,以免你誤解成數(shù)學(xué)計(jì)算意義上的括號(hào)宠哄。

最后來(lái)看一個(gè)“可變的”tuple:

>>> t = ('a', 'b', ['A', 'B'])
>>> t[2][0] = 'X'
>>> t[2][1] = 'Y'
>>> t
('a', 'b', ['X', 'Y'])

這個(gè)tuple定義的時(shí)候有3個(gè)元素,分別是'a'嗤攻,'b'和一個(gè)list。不是說(shuō)tuple一旦定義后就不可變了嗎诽俯?怎么后來(lái)又變了妇菱?

別急,我們先看看定義的時(shí)候tuple包含的3個(gè)元素:

tuple-0

當(dāng)我們把list的元素'A''B'修改為'X''Y'后暴区,tuple變?yōu)椋?/p>

tuple-1

表面上看闯团,tuple的元素確實(shí)變了,但其實(shí)變的不是tuple的元素仙粱,而是list的元素房交。tuple一開始指向的list并沒有改成別的list,所以伐割,tuple所謂的“不變”是說(shuō)候味,tuple的每個(gè)元素,指向永遠(yuǎn)不變隔心。即指向'a'白群,就不能改成指向'b',指向一個(gè)list硬霍,就不能改成指向其他對(duì)象帜慢,但指向的這個(gè)list本身是可變的!

理解了“指向不變”后,要?jiǎng)?chuàng)建一個(gè)內(nèi)容也不變的tuple怎么做粱玲?那就必須保證tuple的每一個(gè)元素本身也不能變躬柬。

關(guān)于list和tuple就說(shuō)到這里。額···我去優(yōu)化我的BMI程序去了抽减,再會(huì)~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末允青,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子胯甩,更是在濱河造成了極大的恐慌昧廷,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,383評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件偎箫,死亡現(xiàn)場(chǎng)離奇詭異木柬,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)淹办,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門眉枕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人怜森,你說(shuō)我怎么就攤上這事速挑。” “怎么了副硅?”我有些...
    開封第一講書人閱讀 157,852評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵姥宝,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我恐疲,道長(zhǎng)腊满,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,621評(píng)論 1 284
  • 正文 為了忘掉前任培己,我火速辦了婚禮碳蛋,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘省咨。我一直安慰自己肃弟,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評(píng)論 6 386
  • 文/花漫 我一把揭開白布零蓉。 她就那樣靜靜地躺著笤受,像睡著了一般。 火紅的嫁衣襯著肌膚如雪敌蜂。 梳的紋絲不亂的頭發(fā)上感论,一...
    開封第一講書人閱讀 49,929評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音紊册,去河邊找鬼比肄。 笑死快耿,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的芳绩。 我是一名探鬼主播掀亥,決...
    沈念sama閱讀 39,076評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼妥色!你這毒婦竟也來(lái)了搪花?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,803評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤嘹害,失蹤者是張志新(化名)和其女友劉穎撮竿,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體笔呀,經(jīng)...
    沈念sama閱讀 44,265評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡股淡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評(píng)論 2 327
  • 正文 我和宋清朗相戀三年序目,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,716評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡叁巨,死狀恐怖突梦,靈堂內(nèi)的尸體忽然破棺而出霎苗,到底是詐尸還是另有隱情循狰,我是刑警寧澤,帶...
    沈念sama閱讀 34,395評(píng)論 4 333
  • 正文 年R本政府宣布逞盆,位于F島的核電站檀蹋,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏云芦。R本人自食惡果不足惜俯逾,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評(píng)論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望焕数。 院中可真熱鬧,春花似錦刨啸、人聲如沸堡赔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)善已。三九已至,卻和暖如春离例,著一層夾襖步出監(jiān)牢的瞬間换团,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工宫蛆, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留艘包,地道東北人的猛。 一個(gè)月前我還...
    沈念sama閱讀 46,488評(píng)論 2 361
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像想虎,于是被迫代替她去往敵國(guó)和親卦尊。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評(píng)論 2 350

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

  • 一舌厨、python 變量和數(shù)據(jù)類型 1.整數(shù) Python可以處理任意大小的整數(shù)岂却,當(dāng)然包括負(fù)整數(shù),在Python程序...
    績(jī)重KF閱讀 1,662評(píng)論 0 1
  • 最近在慕課網(wǎng)學(xué)習(xí)廖雪峰老師的Python進(jìn)階課程裙椭,做筆記總結(jié)一下重點(diǎn)躏哩。 基本變量及其類型 變量 在Python中,...
    victorsungo閱讀 1,671評(píng)論 0 5
  • Python中整數(shù)和浮點(diǎn)數(shù) Python支持對(duì)整數(shù)和浮點(diǎn)數(shù)直接進(jìn)行四則混合運(yùn)算,運(yùn)算規(guī)則和數(shù)學(xué)上的四則運(yùn)算規(guī)則完全...
    璽睿siri閱讀 717評(píng)論 0 0
  • 本教程基于Python 3你雌,參考 A Byte of Python v1.92(for Python 3.0) 以...
    yuhuan121閱讀 3,047評(píng)論 1 6
  • 在沒有小孩子之前就想著要多了解些胎教器联,嬰幼兒教育的東西,以便能夠更好的了解寶寶婿崭,教育寶寶拨拓,避免那么慌亂。 現(xiàn)實(shí)是氓栈,...
    lajiing閱讀 209評(píng)論 0 0