使用生成器生成(p,1-p)对

时间:2015-09-15 15:53:34

标签: python

我想做的是:

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()两次,因此无法按预期工作,这会产生不同的结果。

我怎样才能使用生成器表达式?

1 个答案:

答案 0 :(得分:6)

使用creator-function:

random_numbers = (random.random() for i in range(10))
my_list = [ (p, p-1) for p in random_numbers ]

或使用嵌套生成器:

this