猿问

通过重复生成排列

我知道itertools,但似乎只能生成排列而不能重复。


例如,我想为2个骰子生成所有可能的骰子骰。因此,我需要大小为2的[1、2、3、4、5、6]的所有排列,包括重复:(1、1),(1、2),(2、1)...等


如果可能的话,我不想从头开始实现


红颜莎娜
浏览 328回答 3
3回答

12345678_0001

您不是在寻找排列-您需要笛卡尔积。对于此用途,来自itertools的产品:from itertools import productfor roll in product([1, 2, 3, 4, 5, 6], repeat = 2):    print(roll)

开满天机

在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)]
随时随地看视频慕课网APP

相关分类

Python
我要回答