我怎么能做到这一点,但骰子的数量是可变的?

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 个循环。

che*_*ner 5

您需要一组值的(笛卡尔)乘积。

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)