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)
有关更多信息,请参阅文档.