Python中的多范围产品

The*_*ire 1 python generator permutation range

有一个更好的方法吗:

perms = product(range(1,7),range(1,7),range(1,7))
Run Code Online (Sandbox Code Playgroud)

这样我可以选择使用多少量程?我希望它等同于此,但可扩展.

def dice(num)
    if num == 1:
        perms = ((i,) for i in range(1,7))
    elif num == 2:
        perms = product(range(1,7),range(1,7))
    elif num == 3:
        perms = product(range(1,7),range(1,7),range(1,7))
    #... and so on
Run Code Online (Sandbox Code Playgroud)

但我知道必须有更好的方法.我用它来计算骰子结果.实际的代码

def dice(selection= lambda d: d[2]):   
    perms = itertools.product(range(1,7),range(1,7),range(1,7))      
    return collections.Counter(((selection(sorted(i)) for i in perms)))
Run Code Online (Sandbox Code Playgroud)

我可以用各种各样的选择器来调用它,例如sum(d[0:2])最低2个骰子的总和或者d[1]获得中间骰子.

Mar*_*son 10

是.使用repeat关键字参数:

perms = product(range(1, 7), repeat=3)
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅文档.