Python中的多个区间乘积
有没有更好的方法来做到这一点:
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])
来计算最低的两个骰子的和,或者 d[1]
来获取中间的骰子。
2 个回答
0
我觉得
perms = itertools.product(*([xrange(1,7)]*num))
应该能帮到你。
10