2012-05-09 48 views

回答

34

您發佈它的方式,它是一個SyntaxError
但我想這個陳述是在[]之內。然後它是一個list comprehension它創建一個包含100個隨機數的列表。它相當於下面的代碼:

whatever = [] 
for i in range(100): 
    whatever.append(randrange(10**10)) 

如果代碼是內部()而不是[]這將是一個generator expression,即一個迭代,其項目不立即但根據需要創建。

+2

這是在一個[]所以我想它的列表理解.. – KodeSeeker

25

它本身就是一個語法錯誤。在括號括起來,這是一個generator expression

(randrange(10**10) for i in range(100)) 

返回一個生成器,將產生的100個呼叫的結果randrange(10**10),一次一個。

內方括號,這是一個list comprehension

[randrange(10**10) for i in range(100)] 

返回100號從每個randrange(10**10)通話產生的列表。

生成器表達式對列表理解的優勢在於它是懶惰地評估的,因此您不必構造整個列表並將其保留在內存中(這與特大型,可能無限的生成器尤其相關)。

相關問題