2017-10-19 239 views
0

一個人爲的例子,試圖瞭解Python的列表理解使用列表理解

我要產生1〜100 此範圍內的1000個隨機偶數的名單是我

Python中生成隨機偶數
import random 
list = [random.randint(1,100) for _ in range(1,1000) if _ %2 ==0] 

我無法弄清楚如何檢查中的randint()for循環的結果。

我知道這可以用random.randrange(x,y,2)或其他機制來完成。我想了解我能否以列表理解的方式來完成。

+0

我建議你重新檢查代碼,因爲當我打印的'list',它給了這都是奇數和偶數 –

+1

在一個修真列表賦值給變量的伎倆隨機數的輸出在[val]中使用'var',所以如果x%2 == 0],你的表達式變成[[x for _ in xrange(1000)for x in [random.randint(1,100)]'(注意順序的事情)。這將「[random.randint(1,100)]'中的唯一元素賦予'x'以供您的特定用途 –

+0

@PhuNgo ooh,這是真的。我建議你把它寫成答案(儘管我會放棄'xrange' - Python3已經出現了十多年了)。 –

回答

4

當然你可以使用列表理解,只是不會這樣。你可以做的卻是寫,產生一個隨機甚至數的函數,然後執行:

[your_func() for _ in range(1000)] 

your_func在這種情況下可能是:

while True: 
    n = random.randint(1, 100) 
    if n%2 == 0: 
     yield n 

不過,當然,這是使用random.randrange(2, 101, 2)幾乎比你指出的可能性更好。

[random.randrange(2, 101, 2) for _ in range(1000)] 
+0

這是否意味着我不能在for循環體內引用[RANDE中的x操作]中的操作結果? –

+0

@PavanKMutt正確。 –

+0

@PavanKMutt *不是for-loop *,那是*列表理解*。他們是不同的。是的,python不允許你在理解中指定 –