Skip to main content
 首页 » 编程设计

python之Python 中的多范围产品

2025年05月04日11sharpest

有没有更好的方法:

perms = product(range(1,7),range(1,7),range(1,7)) 

以便我可以选择我使用的范围? 我希望它与此等效,但可扩展。

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 

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

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))) 

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

请您参考如下方法:

是的。使用 repeat 关键字参数:

perms = product(range(1, 7), repeat=3) 

参见 docs了解更多。