Python 基礎(chǔ)知識全篇-列表推導式

乍一看到列表推導式你可能會感到疑惑机断。它們是一種創(chuàng)建和使用列表的簡潔方式楷拳。理解列表推導式是有用的,因為你可能在其他人的代碼里看到列表推導式吏奸。下面來了解下列表推導式吧欢揖。

數(shù)字列表的推導式

回顧上節(jié)知識,我們可以創(chuàng)建一個包含前10個數(shù)字的列表苦丁,如下所示:

# Store the first ten square numbers in a list.

# Make an empty list that will hold our square numbers.

squares = []

# Go through the first ten numbers, square them, and add them to our list.

for number in range(1,11):

? ? new_square = number**2

? ? squares.append(new_square)


# Show that our list is correct.

for square in squares:

? ? print(square)

上述代碼中我們實現(xiàn)了創(chuàng)建包含10個數(shù)字的列表浸颓,對每個數(shù)字作平方操作并將它們存儲進新的數(shù)組的功能。代碼略顯冗長旺拉,我們可以省略for循環(huán)中的new_square參數(shù)产上,簡化代碼。使用列表推導式就可以進一步簡化代碼蛾狗,如下所示:

# Store the first ten square numbers in a list.

squares = [number**2 for number in range(1,11)]

# Show that our list is correct.

for square in squares:

? ? print(square)

平方操作和生成新列表的過程都濃縮進了一行代碼晋涣。你是不是已經(jīng)暈頭轉(zhuǎn)向了,讓我們來看看這行代碼發(fā)生了什么沉桌。

首先我們定義了一個列表谢鹊,名字為?squares?算吩。

接下來看看列表中括號中的代碼:

for number in range(1, 11)

它在1-10之間創(chuàng)建一個循環(huán),把每個數(shù)字存儲到變量?number?中佃扼。接下來我們看一看對每次循環(huán)中的?number?作了哪些操作偎巢。

number**2

每個?number?都作了平方操作,并將結(jié)果存儲在了定義好的隊列中兼耀。我們可以用如下語言來閱讀這行代碼:

squares = [raise?number?to the second power, for each?number?in the range 1-10]压昼、

其他例子

上個例子是對數(shù)字作平方操作,下列代碼是對數(shù)字作乘操作瘤运,仔細閱讀代碼窍霞,體會數(shù)字列表表達式的用法。

# Make an empty list that will hold the even numbers.

evens = []

# Loop through the numbers 1-10, double each one, and add it to our list.

for number in range(1,11):

? ? evens.append(number*2)


# Show that our list is correct:

for even in evens:

? ? print(even)

簡化后代碼如下所示:

# Make a list of the first ten even numbers.

evens = [number*2 for number in range(1,11)]

for even in evens:

? ? print(even)

非數(shù)字列表的推導式

我們也可以在非數(shù)字列表中運用推導式拯坟。在下面的例子中但金,我們會創(chuàng)建一個非數(shù)字列表,然后利用推導式生成一個新的列表郁季。不運用推導式的源代碼如下所示:

# Consider some students.

students = ['bernice', 'aaron', 'cody']

# Let's turn them into great students.

great_students = []

for student in students:

? ? great_students.append(student.title() + " the great!")

# Let's greet each great student.

for great_student in great_students:

? ? print("Hello, " + great_student)

我們想寫下如下所示的推導式:

great_students = [add 'the great' to each?student, for each?student?in the list of students]

代碼如下所示:

# Consider some students.

students = ['bernice', 'aaron', 'cody']

# Let's turn them into great students.

great_students = [student.title() + " the great!" for student in students]

# Let's greet each great student.

for great_student in great_students:

? ? print("Hello, " + great_student)

動手試一試

如果你已經(jīng)理解了列表推導式冷溃,就用推導式解決下列問題。如果沒有巩踏,就使用常規(guī)代碼來做秃诵,當你做的多了,就會對列表推導式有更深刻的理解塞琼。

Multiples of Ten

生成一個包含前10個數(shù)字的10倍大小的數(shù)字列表(10菠净,20,30彪杉,40毅往,50,60派近,70攀唯,80,90渴丸,100)侯嘀,嘗試使用列表推導式。

Cubes

我們已經(jīng)看到如何生成前10個數(shù)字的平方數(shù)列表谱轨。接下來生成它們的立方數(shù)列表吧戒幔!

Awesomeness

生成一個包含5個名字的列表,利用列表表達式生成一個新的列表土童,此列表為每個名字添加了一條 “is awesome” 語句诗茎。

Working Backwards

在不使用列表推導式的前提下,寫出下列偽代碼對應(yīng)的代碼献汗。?plus_thirteen = [number + 13 for number in range(1,11)]

# Ex : Multiples of Ten

# put your code here

# Ex : Cubes

# put your code here

# Ex : Awesomeness

# put your code here

# Ex : Working Backwards

# put your code here

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末敢订,一起剝皮案震驚了整個濱河市王污,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌楚午,老刑警劉巖昭齐,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異醒叁,居然都是意外死亡司浪,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進店門把沼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人吁伺,你說我怎么就攤上這事饮睬。” “怎么了篮奄?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵捆愁,是天一觀的道長。 經(jīng)常有香客問我窟却,道長昼丑,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任夸赫,我火速辦了婚禮菩帝,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘茬腿。我一直安慰自己呼奢,他們只是感情好,可當我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布切平。 她就那樣靜靜地躺著握础,像睡著了一般。 火紅的嫁衣襯著肌膚如雪悴品。 梳的紋絲不亂的頭發(fā)上禀综,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天,我揣著相機與錄音苔严,去河邊找鬼定枷。 笑死,一個胖子當著我的面吹牛邦蜜,可吹牛的內(nèi)容都是我干的依鸥。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼悼沈,長吁一口氣:“原來是場噩夢啊……” “哼贱迟!你這毒婦竟也來了姐扮?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤衣吠,失蹤者是張志新(化名)和其女友劉穎茶敏,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體缚俏,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡惊搏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了忧换。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片恬惯。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖亚茬,靈堂內(nèi)的尸體忽然破棺而出酪耳,到底是詐尸還是另有隱情,我是刑警寧澤刹缝,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布碗暗,位于F島的核電站,受9級特大地震影響梢夯,放射性物質(zhì)發(fā)生泄漏言疗。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一颂砸、第九天 我趴在偏房一處隱蔽的房頂上張望噪奄。 院中可真熱鬧,春花似錦沾凄、人聲如沸梗醇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽叙谨。三九已至,卻和暖如春保屯,著一層夾襖步出監(jiān)牢的瞬間手负,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工姑尺, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留竟终,地道東北人。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓切蟋,卻偏偏與公主長得像统捶,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,927評論 2 355