列表推導list(x * x for x in range(10))


語法分解:[程序最終執行的語句(變量x)  for 變量x in range(n) 條件語句(if)或for 變量x in range(n)]        執行順序:1.先執行中間的for語句             2.再執行最后面的條件語句或者嵌套for語句中的for             3.最后執行程序最終要達到目的的語句
------------------------------------------------------------------------------------- 等價於:
for 變量x in range(n): if 條件 : 程序最終執行的語句

 

列表推導是一種從其他列表創建列表的方式,類似於數學中的集合推導列表推導的工作原理非常簡單,有點類似於for循環。

>>> [x * x for x in range(10)] [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

這個列表由range(10)內每個值的平方組成,非常簡單吧?如果只想打印那些能被3整除的平方值,該如何辦呢?可使用求模運算符:如果y能被3整除,y % 3將返回0(請注意,僅當x能被3整除時,x*x才能被3整除)。為實現這種功能,可在列表推導中添加一條if語句。

>>> [x*x for x in range(10) if x % 3 == 0] [0, 9, 36, 81]
'''
  語法分解:[程序最終執行的語句(變量x) for 變量x in range(n) 條件語句(if)或for 變量x in range(n)]
       執行順序:1.先執行中間的for語句
            2.再執行最后面的條件語句或者嵌套for語句中的for
            3.最后執行程序最終要達到目的的語句
'''

還可添加更多的for部分。

>>> [(x, y) for x in range(3) for y in range(3)]
[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]

按照上面程序的執行步驟我們可以改寫驗證:

>>> for x in range(3):
...            for y in range(3):
...                    (x,y)
...
(0,0)
(0,1)
(0,2)
(1,0)
(1,1)
(1,2)
(2,0)
(2,1)
(2,2)

很明顯咱們的驗證是對的。它們最原始的樣子應該是這個樣子的,它們會返回一組組元組數據,它們輸出的時候是零散的,所以我們要把它們收集起來,我們可以把它們裝入列表。操作方法可以是直接在列表[]里面寫這個代碼,還有一種便是使用list()創建一個列表。如下:

>>> list_number = list((x,y) for x in range(3) for y in range(3))
>>> list_number
[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM