为了账号安全,请及时绑定邮箱和手机立即绑定

通过重复生成排列

通过重复生成排列

红颜莎娜 2019-10-11 11:08:35
我知道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)


查看完整回答
反对 回复 2019-10-11
?
开满天机

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)]


查看完整回答
反对 回复 2019-10-11
  • 3 回答
  • 0 关注
  • 327 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信