Ruu*_*d14 2 python loops nested-loops
我怎么能做到这一点,但骰子的数量是可变的?这意味着all_dices可以有任何长度。
for first_dice_number in all_dices[0]:
for second_dice_number in all_dices[1]:
for thrird_dice_number in all_dices[2]:
result = first_dice_number+second_dice_number+thrird_dice_number
results.append(result)
Run Code Online (Sandbox Code Playgroud)
为了澄清,all_dices看起来像:
[[1,2,3,4,5,6],[1,2,3,4,5,6],[1,2,3,4,5,6]]
Run Code Online (Sandbox Code Playgroud)
这很可能是一个菜鸟问题,但我就是想不通。
问题是我不想for在彼此内部放置 100 个循环。
您需要一组值的(笛卡尔)乘积。
from itertools import product
results = [sum(numbers) for numbers in product(*all_dices)]
Run Code Online (Sandbox Code Playgroud)
例如:
>>> list(product([1,2,3], [1,2,3,4]))
[(1, 1), (1, 2), (1, 3), (1, 4), (2, 1), (2, 2), (2, 3), (2, 4), (3, 1), (3, 2), (3, 3), (3, 4)]
Run Code Online (Sandbox Code Playgroud)