閱讀《Python編程從入門到實踐》Day03

第四章

1叛溢、遍歷整個列表

當你需要整潔干凈地輸出一個列表中的所有元素,就必須對每個元素執(zhí)行相同的操作。此時的代碼中就會含有大量重復的代碼擅这,而當列表發(fā)生一些改變,又需要修改大量的代碼景鼠,顯然這樣的方法工作效率低下仲翎。所以有必要使用Python中的for循環(huán)來解決這些問題,簡化代碼铛漓,提高效率溯香。

magicians = ['alice', 'david', 'carolina']
for magician in magicians:
    print(magician)
# 輸出:
alice
david
carolina

2、for循環(huán)

循環(huán)就是讓計算機自動完成重復性的工作浓恶。進入循環(huán)操作后玫坛,計算機會自動執(zhí)行相應的操作,直到列表的最后一個元素也執(zhí)行完后包晰,就會自動退出循環(huán)湿镀,繼續(xù)往下執(zhí)行。
在for循環(huán)中伐憾,可對每個元素執(zhí)行任何的操作勉痴,添加多少行的代碼都可以,計算機會針對列表中的每個元素都執(zhí)行一次树肃。
在for循環(huán)的后面蒸矛,沒有縮進的代碼都只執(zhí)行一次。因為只有縮進了的代碼才隸屬于for循環(huán)。沒有縮進代表該行代碼不屬于for循環(huán)里面雏掠,所以只會執(zhí)行一次廓脆。
Python是根據(jù)縮進來判斷代碼行與前一個代碼行的關系。

3磁玉、常見的縮進錯誤

對于位于for語句后面且屬于循環(huán)組成部分的代碼行停忿,一定要縮進。如果你忘記縮進蚊伞,Python會提醒你席赂。
當循環(huán)能夠運行而且不會報告錯誤,但結果卻出乎意料时迫,此時颅停,就有可能是你忘記縮進其中的某些代碼行。
如果你將無需縮進的代碼行縮進了掠拳,Python也會提醒你癞揉。
如果不小心縮進了應在循環(huán)結束后執(zhí)行的代碼,這些代碼會針對每個列表元素重復執(zhí)行溺欧。
for語句末尾的冒號告訴Python喊熟,下一行是循環(huán)的第一行。如果你不小心遺漏了冒號姐刁,將導致語法錯誤芥牌,因為Python不知道你意欲何為。
因此聂使,在編寫代碼時壁拉,盡量避免不該出現(xiàn)的錯誤,因為某些錯誤會花費大量的時間才能找出柏靶。

4弃理、創(chuàng)建數(shù)值列表

(1)使用函數(shù)range()

range()函數(shù)可以生成一系列的數(shù)字,如:

for value in range(1, 5):
    print(value)
# 輸出:
1
2
3
4

上述例子中用到的range()函數(shù)屎蜓,它的第一個參數(shù)表示生成的序列從1開始痘昌,到5之前結束,不包括5梆靖。

(2)使用range()創(chuàng)建數(shù)字列表

可使用函數(shù)list()將range()的結果直接轉(zhuǎn)換為列表控汉。

numbers = list(range(1, 5))
print(numbers)
# 輸出:
[1, 2, 3, 4]

使用range()函數(shù)時,還可以指定步長返吻。如:

numbers = list(range(2, 11, 2))
print(numbers)
# 輸出:
[2, 4, 6, 8, 10]

range()函數(shù)括號中的第三個參數(shù)為指定的步長,若不寫第三個參數(shù)乎婿,默認為1测僵。

(3)對數(shù)字列表執(zhí)行簡單的統(tǒng)計運算
digits = [4, 2, 5, 0, 7, 1, 9, 3]
print(min(digits))
print(max(digits))
print(sum(digits))
# 輸出:
0
9
31
(4)列表解析

列表解析將for循環(huán)和創(chuàng)建新元素的代碼合并成一行,并自動附加新元素。如:

squares = [value**2 for value in range(1, 11)]
print(squares)
# 輸出:
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

要使用這種語法捍靠,首先指定一個描述性的列表名沐旨,然后添加一個方括號,并在方括號中定義一個表達式榨婆,用于生成你要存儲到列表中的值磁携。在上述例子中,表達式為value**2良风,用于計算平方值谊迄。而后的for循環(huán)用于給表達式提供值,注意這里的for語句末尾不需要加上冒號烟央。

5统诺、使用列表的一部分

(1)切片

要創(chuàng)建切片,可指定要使用的第一個元素和最后一個元素的索引疑俭。

fruits = ['apple', 'banana', 'orange', 'pear', 'watermelon']
print(fruits[1:4])
# 輸出:
['banana', 'orange', 'pear']

與函數(shù)range()一樣粮呢,Python會在第二個索引之前停止操作,即不包括索引為4的元素钞艇。通過切片啄寡,你可以生成列表的任何子集。
如果你沒有指定第一個索引哩照,Python將自動從列表的開頭開始提取元素这难;同樣的,如果沒有指定第二個索引葡秒,Python將會一直提取到列表的末尾姻乓。注意冒號不能省略,索引也可以是負數(shù)眯牧。

(2)遍歷切片

遍歷列表的部分元素蹋岩,可在for循環(huán)中使用切片。如只打印前三種水果:

fruits = ['apple', 'banana', 'orange', 'pear', 'watermelon']
for fruit in fruits[:3]:
    print(fruit)
# 輸出:
apple
banana
orange
(3)復制列表

要復制整個列表学少,可創(chuàng)建一個包含整個列表的切片剪个,方法是同時省略起始索引和終止索引([:]),即可復制整個列表版确。
函數(shù)id()返回的是變量的內(nèi)存地址扣囊。

fruits = ['apple', 'banana', 'orange', 'pear', 'watermelon']
my_fruits = fruits[:]
print(id(fruits))
print(id(my_fruits))
# 輸出:
2722431740296
2722431740360
fruits = ['apple', 'banana', 'orange', 'pear', 'watermelon']
my_fruits = fruits
print(id(fruits))
print(id(my_fruits))
# 輸出:
2686324681096
2686324681096

通過上述兩個例子,我們可以知道绒疗,雖然復制的是整個列表侵歇,但是不能直接賦值,因為通過輸出內(nèi)存地址可以發(fā)現(xiàn)吓蘑,直接賦值的話惕虑,表明有兩個不同的變量名指向了同一個內(nèi)存地址坟冲,它實際上是將內(nèi)存地址復制給了新的變量。而用切片的方法溃蔫,我們可以發(fā)現(xiàn)內(nèi)存地址是不一樣的健提,說明這兩個變量除了列表里面的元素相同之外,并沒有任何的關系伟叛,它實際上是將列表中的元素完全復制給了新的變量私痹。

6、元組

列表在程序運行期間统刮,它的元素是可以修改的紊遵,即列表是可變的。但有時候需要一系列不可變的元素网沾,而這不可變的列表被稱為元組癞蚕。

(1)定義元組

元組類似于列表,但它使用圓括號而不是方括號來標識辉哥。

demensions = (18, 65, 32)
print(demensions)
print(demensions[1])
# 輸出:
(18, 65, 32)
65

對元組中元素的訪問桦山,和訪問列表元素是一樣的。
當你要修改元組中的某一個元素時醋旦,Python會返回類型錯誤的消息恒水,說明元組是不可變的。

(2)遍歷元組中的所有值

可以像列表一樣用for循環(huán)來遍歷元組中的所有值饲齐。

demensions = (18, 65, 32)
for demension in demensions:
    print(demension)
# 輸出:
18
65
32
(3)修改元組變量

雖然不能修改元組的元素钉凌,但可以給存儲元組的變量賦值。所以當你需要修改元組的某一個元素時捂人,只能對該元組重新賦值御雕。這樣Python就不會報錯,因為給元組變量賦值是合法的滥搭。

7酸纲、設置代碼格式

Python改進提案(Python Enhancement Proposal,PEP)瑟匆,PEP 8是最古老的PEP之一闽坡,它向Python程序員提供了代碼格式設置指南。
PEP 8建議每級縮進都使用四個空格愁溜,這既可以提高可讀性疾嗅,又留下了足夠的多級縮進的空間。
建議每行的行長不超過80個字符冕象,雖然每行容納的字符數(shù)可以很多代承,但是為了方便查看,盡量不超過80個字符交惯。PEP 8還建議注釋的行長不超過72個字符次泽,原因與上面一樣穿仪。
要將程序的不同部分分開席爽,可使用空行意荤,但也不能濫用≈欢停空行不會影響代碼的運行玖像,但會影響代碼的可讀性。Python解釋器根據(jù)水平縮進情況來解讀代碼齐饮,但不關心垂直間距捐寥。

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市祖驱,隨后出現(xiàn)的幾起案子握恳,更是在濱河造成了極大的恐慌闺属,老刑警劉巖姥敛,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異逻族,居然都是意外死亡匕坯,警方通過查閱死者的電腦和手機束昵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來葛峻,“玉大人锹雏,你說我怎么就攤上這事∈踅保” “怎么了礁遵?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長采记。 經(jīng)常有香客問我佣耐,道長,這世上最難降的妖魔是什么挺庞? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任晰赞,我火速辦了婚禮,結果婚禮上选侨,老公的妹妹穿的比我還像新娘掖鱼。我一直安慰自己,他們只是感情好援制,可當我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布戏挡。 她就那樣靜靜地躺著,像睡著了一般晨仑。 火紅的嫁衣襯著肌膚如雪褐墅。 梳的紋絲不亂的頭發(fā)上拆檬,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天,我揣著相機與錄音妥凳,去河邊找鬼竟贯。 笑死,一個胖子當著我的面吹牛逝钥,可吹牛的內(nèi)容都是我干的屑那。 我是一名探鬼主播,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼艘款,長吁一口氣:“原來是場噩夢啊……” “哼持际!你這毒婦竟也來了?” 一聲冷哼從身側響起哗咆,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤蜘欲,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后晌柬,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體姥份,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年空繁,在試婚紗的時候發(fā)現(xiàn)自己被綠了殿衰。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡盛泡,死狀恐怖闷祥,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情傲诵,我是刑警寧澤凯砍,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站拴竹,受9級特大地震影響悟衩,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜栓拜,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一座泳、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧幕与,春花似錦挑势、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至诫给,卻和暖如春香拉,著一層夾襖步出監(jiān)牢的瞬間啦扬,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工凫碌, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留扑毡,地道東北人。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓证鸥,卻偏偏與公主長得像僚楞,于是被迫代替她去往敵國和親勤晚。 傳聞我的和親對象是個殘疾皇子枉层,可洞房花燭夜當晚...
    茶點故事閱讀 43,490評論 2 348

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

  • 〇、前言 本文共108張圖赐写,流量黨請慎重鸟蜡! 歷時1個半月,我把自己學習Python基礎知識的框架詳細梳理了一遍挺邀。 ...
    Raxxie閱讀 18,929評論 17 410
  • 前言 ||| 第二章 使用ArcPy編寫腳本 Python支持大部分在其他語言中出現(xiàn)的編程結構揉忘。在本章內(nèi)容中,我們...
    muyan閱讀 89,993評論 10 55
  • http://python.jobbole.com/85231/ 關于專業(yè)技能寫完項目接著寫寫一名3年工作經(jīng)驗的J...
    燕京博士閱讀 7,557評論 1 118
  • 多重選擇 快捷鍵 ? + d選擇下一個和當前選取單詞一樣的單詞. ? + f3選擇當前 view 所有和當前選取單...
    Floyda閱讀 703評論 0 3
  • 糖分攝取過多您朽、偏食、運動不足…… 各種各樣不良的生活 習慣都會對我們的身體健康有著負面的影響换淆,導致我們的身體活力降...
    miracle靜閱讀 1,169評論 0 1