python - Python 中的多范围产品

标签 python range generator permutation

有没有更好的方法:

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了解更多。

关于python - Python 中的多范围产品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2718029/

相关文章:

python - Keras 自定义数据生成器 - 错误 : 'int' object has no attribute 'shape'

python - 如何使 Python 生成器尽可能快?

Python - 按行比较两个二维数组

python - 与具有相同模板的多个图像进行模板匹配

c++ - 基于 c++ 范围的 std::vector 迭代的顺序

php - 网络 - 视频 : bytes range to time

python - 我在使用 PyVirtualDisplay==0.2.5 包运行使用虚拟显示器( headless (headless)模式)的测试时遇到问题

python - 查找落入范围内的值

c# - 检查所选单元格是否在特定范围内

C - 随机数生成器的问题