使用列表理解

问题描述:

一个人为的例子,试图了解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已经出现了十多年了)。 –

当然你可以使用列表理解,只是不会这样。你可以做的却是写,产生一个随机甚至数的函数,然后执行:

[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不允许你在理解中指定 –