我目前正在尝试了解在利用任何理解循环之前如何将两个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
Run Code Online (Sandbox Code Playgroud)
预期成绩:
[(1,1),(1,2)(1,3)...etc]
Run Code Online (Sandbox Code Playgroud)
我的结果:
[[(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)]]
Run Code Online (Sandbox Code Playgroud)
只需摆脱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
Run Code Online (Sandbox Code Playgroud)
请注意,您可以通过简单的列表理解来做到这一点
def build_roll_permuatations():
return [(i,j) for i in range(1,7) for j in range(1,7)]
Run Code Online (Sandbox Code Playgroud)
或itertools.product(因为这实际上是乘积而不是排列):
def build_rolls():
return list(product(range(1,7), repeat=2))
Run Code Online (Sandbox Code Playgroud)