我想做的是:
my_list = []
for i in range(10):
p = random.random()
my_list.append( (p,1-p) )
我正在尝试对生成器做同样的事情。我尝试了以下方法:
my_list = [ (random.random(), 1-random.random()) for i in range(10) ]
它没有按预期工作,因为它调用了两次 random.random(),这会产生不同的结果。
如何使用生成器表达式来实现?
请您参考如下方法:
使用创建者函数:
def generate_pair(p):
return (p, 1-p)
my_list = [ generate_pair(random.random()) for i in range(10) ]
或使用嵌套生成器:
random_numbers = (random.random() for i in range(10))
my_list = [ (p, p-1) for p in random_numbers ]
