溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

淺談python的列表推導(dǎo)式

發(fā)布時(shí)間:2020-07-21 15:07:29 來(lái)源:億速云 閱讀:135 作者:小豬 欄目:開(kāi)發(fā)技術(shù)

小編這次要給大家分享的是淺談python的列表推導(dǎo)式,文章內(nèi)容豐富,感興趣的小伙伴可以來(lái)了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。

乍一看到列表推導(dǎo)式你可能會(huì)感到疑惑。它們是一種創(chuàng)建和使用列表的簡(jiǎn)潔方式。理解列表推導(dǎo)式是有用的,因?yàn)槟憧赡茉谄渌说拇a里看到列表推導(dǎo)式。下面來(lái)了解下列表推導(dǎo)式吧。

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

回顧之前學(xué)過(guò)的知識(shí),我們可以創(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ù)字的列表,對(duì)每個(gè)數(shù)字作平方操作并將它們存儲(chǔ)進(jìn)新的數(shù)組的功能。代碼略顯冗長(zhǎng),我們可以省略 for 循環(huán)中的 new_square 參數(shù),簡(jiǎn)化代碼。使用列表推導(dǎo)式就可以進(jìn)一步簡(jiǎn)化代碼,如下所示:

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

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

首先我們定義了一個(gè)列表,名字為 squares 。

接下來(lái)看看列表中括號(hào)中的代碼:

for number in range(1, 11)

它在1-10之間創(chuàng)建一個(gè)循環(huán),把每個(gè)數(shù)字存儲(chǔ)到變量 number 中。接下來(lái)我們看一看對(duì)每次循環(huán)中的 number 作了哪些操作。

number**2

每個(gè) number 都作了平方操作,并將結(jié)果存儲(chǔ)在了定義好的隊(duì)列中。我們可以用如下語(yǔ)言來(lái)閱讀這行代碼:

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

其他例子

上個(gè)例子是對(duì)數(shù)字作平方操作,下列代碼是對(duì)數(shù)字作乘操作,仔細(xì)閱讀代碼,體會(huì)數(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)式。在下面的例子中,我們會(huì)創(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)

我們想寫(xiě)下如下所示的推導(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)

擴(kuò)展練習(xí):

生成一個(gè)[[1,2,3],[4,5,6]....]的列表最大值在100以內(nèi)

首先考慮一下正常情況我們應(yīng)該怎么寫(xiě)

a = []
for x in range(1,100,3):
 a.append([x,x+1,x+2])

然后再把它轉(zhuǎn)換成列表推導(dǎo)式

a = [[x,x+1,x+2] for x in range(1,100,3)]

看完這篇關(guān)于淺談python的列表推導(dǎo)式的文章,如果覺(jué)得文章內(nèi)容寫(xiě)得不錯(cuò)的話,可以把它分享出去給更多人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI