1. 程式人生 > 程式設計 >什麼是python的列表推導式

什麼是python的列表推導式

乍一看到列表推導式你可能會感到疑惑。它們是一種建立和使用列表的簡潔方式。理解列表推導式是有用的,因為你可能在其他人的程式碼裡看到列表推導式。下面來了解下列表推導式吧。

數字列表的推導式

回顧之前學過的知識,我們可以建立一個包含前10個數字的列表,如下所示:

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

上述程式碼中我們實現了建立包含10個數字的列表,對每個數字作平方操作並將它們儲存進新的陣列的功能。程式碼略顯冗長,我們可以省略 for 迴圈中的 new_square 引數,簡化程式碼。使用列表推導式就可以進一步簡化程式碼,如下所示:

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

平方操作和生成新列表的過程都濃縮進了一行程式碼。你是不是已經暈頭轉向了,讓我們來看看這行程式碼發生了什麼。

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

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

for number in range(1,11)

它在1-10之間建立一個迴圈,把每個數字儲存到變數 number 中。接下來我們看一看對每次迴圈中的 number 作了哪些操作。

number**2

每個 number 都作了平方操作,並將結果儲存在了定義好的佇列中。我們可以用如下語言來閱讀這行程式碼:

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

其他例子

上個例子是對數字作平方操作,下列程式碼是對數字作乘操作,仔細閱讀程式碼,體會數字列表表示式的用法。

# 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)

非數字列表的推導式

我們也可以在非數字列表中運用推導式。在下面的例子中,我們會建立一個非數字列表,然後利用推導式生成一個新的列表。不運用推導式的原始碼如下所示:

# 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','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)

擴充套件練習:

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

首先考慮一下正常情況我們應該怎麼寫

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

然後再把它轉換成列表推導式

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

以上就是什麼是python的列表推導式的詳細內容,更多關於python列表推導式的含義及用法的資料請關注我們其它相關文章!