乍一看到列表推導(dǎo)式你可能會感到疑惑。它們是一種創(chuàng)建和使用列表的簡潔方式。理解列表推導(dǎo)式是有用的,因?yàn)槟憧赡茉谄渌说拇a里看到列表推導(dǎo)式。下面來了解下列表推導(dǎo)式吧。
數(shù)字列表的推導(dǎo)式
回顧之前學(xué)過的知識,我們可以創(chuàng)建一個(gè)包含前10個(gè)數(shù)字的列表,如下所示:
squares = []
for number in range(1,11):
new_square = number**2
squares.append(new_square)
for square in squares:
print(square)
上述代碼中我們實(shí)現(xiàn)了創(chuàng)建包含10個(gè)數(shù)字的列表,對每個(gè)數(shù)字作平方操作并將它們存儲進(jìn)新的數(shù)組的功能。代碼略顯冗長,我們可以省略 for 循環(huán)中的 new_square 參數(shù),簡化代碼。使用列表推導(dǎo)式就可以進(jìn)一步簡化代碼,如下所示:
squares = [number**2 for number in range(1,11)]
for square in squares:
print(square)
平方操作和生成新列表的過程都濃縮進(jìn)了一行代碼。你是不是已經(jīng)暈頭轉(zhuǎn)向了,讓我們來看看這行代碼發(fā)生了什么。
首先我們定義了一個(gè)列表,名字為 squares 。
接下來看看列表中括號中的代碼:
for number in range(1, 11)
它在1-10之間創(chuàng)建一個(gè)循環(huán),把每個(gè)數(shù)字存儲到變量 number 中。接下來我們看一看對每次循環(huán)中的 number 作了哪些操作。
number**2
每個(gè) number 都作了平方操作,并將結(jié)果存儲在了定義好的隊(duì)列中。我們可以用如下語言來閱讀這行代碼:
squares = [raise number to the second power, for each number in the range 1-10]、
其他例子
上個(gè)例子是對數(shù)字作平方操作,下列代碼是對數(shù)字作乘操作,仔細(xì)閱讀代碼,體會數(shù)字列表表達(dá)式的用法。
# 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)
非數(shù)字列表的推導(dǎo)式
我們也可以在非數(shù)字列表中運(yùn)用推導(dǎo)式。在下面的例子中,我們會創(chuàng)建一個(gè)非數(shù)字列表,然后利用推導(dǎo)式生成一個(gè)新的列表。不運(yùn)用推導(dǎo)式的源代碼如下所示:
# 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)
我們想寫下如下所示的推導(dǎo)式:
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ì)職稱中級會計(jì)職稱經(jīng)濟(jì)師注冊會計(jì)師證券從業(yè)銀行從業(yè)會計(jì)實(shí)操統(tǒng)計(jì)師審計(jì)師高級會計(jì)師基金從業(yè)資格稅務(wù)師資產(chǎn)評估師國際內(nèi)審師ACCA/CAT價(jià)格鑒證師統(tǒng)計(jì)資格從業(yè)
一級建造師二級建造師消防工程師造價(jià)工程師土建職稱房地產(chǎn)經(jīng)紀(jì)人公路檢測工程師建筑八大員注冊建筑師二級造價(jià)師監(jiān)理工程師咨詢工程師房地產(chǎn)估價(jià)師 城鄉(xiāng)規(guī)劃師結(jié)構(gòu)工程師巖土工程師安全工程師設(shè)備監(jiān)理師環(huán)境影響評價(jià)土地登記代理公路造價(jià)師公路監(jiān)理師化工工程師暖通工程師給排水工程師計(jì)量工程師
人力資源考試教師資格考試出版專業(yè)資格健康管理師導(dǎo)游考試社會工作者司法考試職稱計(jì)算機(jī)營養(yǎng)師心理咨詢師育嬰師事業(yè)單位教師招聘公務(wù)員公選考試招警考試選調(diào)生村官
執(zhí)業(yè)藥師執(zhí)業(yè)醫(yī)師衛(wèi)生資格考試衛(wèi)生高級職稱護(hù)士資格證初級護(hù)師主管護(hù)師住院醫(yī)師臨床執(zhí)業(yè)醫(yī)師臨床助理醫(yī)師中醫(yī)執(zhí)業(yè)醫(yī)師中醫(yī)助理醫(yī)師中西醫(yī)醫(yī)師中西醫(yī)助理口腔執(zhí)業(yè)醫(yī)師口腔助理醫(yī)師公共衛(wèi)生醫(yī)師公衛(wèi)助理醫(yī)師實(shí)踐技能內(nèi)科主治醫(yī)師外科主治醫(yī)師中醫(yī)內(nèi)科主治兒科主治醫(yī)師婦產(chǎn)科醫(yī)師西藥士/師中藥士/師臨床檢驗(yàn)技師臨床醫(yī)學(xué)理論中醫(yī)理論