Skip to main content
 首页 » 编程设计

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

2025年05月04日14JeffreyZhao

我想做的是:

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 ]