我知道itertools,但似乎只能生成排列而不能重复。例如,我想为2个骰子生成所有可能的骰子骰。因此,我需要大小为2的[1、2、3、4、5、6]的所有排列,包括重复:(1、1),(1、2),(2、1)...等如果可能的话,我不想从头开始实现
3 回答
12345678_0001
TA贡献1802条经验 获得超5个赞
您不是在寻找排列-您需要笛卡尔积。对于此用途,来自itertools的产品:
from itertools import product
for roll in product([1, 2, 3, 4, 5, 6], repeat = 2):
print(roll)
开满天机
TA贡献1786条经验 获得超13个赞
在python 2.7和3.1中有一个itertools.combinations_with_replacement功能:
>>> list(itertools.combinations_with_replacement([1, 2, 3, 4, 5, 6], 2))
[(1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (1, 6), (2, 2), (2, 3), (2, 4),
(2, 5), (2, 6), (3, 3), (3, 4), (3, 5), (3, 6), (4, 4), (4, 5), (4, 6),
(5, 5), (5, 6), (6, 6)]
添加回答
举报
0/150
提交
取消