Skip to main content
 首页 » 编程设计

python之希望返回所有可能的两个骰子卷。返回值是一个包含元组的列表

2025年05月04日14mengfanrong

我目前正在尝试了解如何在使用任何理解循环之前将两个 for 循环嵌套在一起。我的任务是将每个组合的列表作为元组返回,而当我想要 36 种组合的列表时,我收到的是 6 个列表的列表。

我尝试遍历这两个范围。

def build_roll_permutations(): 
  dice = [] 
  for i in range(1,7): 
    dicee = [] 
    for j in range(1,7): 
      dicee.append((i,j)) 
    dice.append(dicee) 
  return dice 

预期结果:

[(1,1),(1,2)(1,3)...etc] 

我的结果:

[[(1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (1, 6)], [(2, 1), (2, 2), (2, 3), (2, 4), (2, 5), (2, 6)], [(3, 1), (3, 2), (3, 3), (3, 4), (3, 5), (3, 6)], [(4, 1), (4, 2), (4, 3), (4, 4), (4, 5), (4, 6)], [(5, 1), (5, 2), (5, 3), (5, 4), (5, 5), (5, 6)], [(6, 1), (6, 2), (6, 3), (6, 4), (6, 5), (6, 6)]] 

请您参考如下方法:

只需去掉 dicee 并直接附加到 dice。

def build_roll_permutations(): 
  dice = [] 
  for i in range(1,7): 
    for j in range(1,7): 
      dice.append((i,j)) 
  return dice 

请注意,您可以通过简单的列表理解来做到这一点

def build_roll_permuatations(): 
    return [(i,j) for i in range(1,7) for j in range(1,7)] 

或itertools.product(因为这实际上是乘积而不是排列):

def build_rolls(): 
    return list(product(range(1,7), repeat=2))