有没有一种有效的方法在Python中生成带有重复数字的数字?

时间:2015-04-23 16:12:49

标签: python permutation

我正在尝试从{1,2,3,4,5,6,7,8,9}生成所有5位数字,这样任何数字最多可以重复两次。也就是说,允许使用12345, 11267, 11226之类的数字,但不允许使用11134 or 11115

我可以编写一个包含多个for循环的代码,但我想知道是否有更短,更优雅的方法可用。 例如,itertools.product('123456789', repeat=5)将生成所有这样的5个元组(总共9^5)或itertools.permutations(''123456789',5)将生成所有5个元组而不重复(总共9x8x7x6x5) 。我想知道有没有办法使用这些工具生成11235 and 11224形式的所有数字,但没有其他任何东西,不经过多个for循环等。

1 个答案:

答案 0 :(得分:4)

除非我误解了这个问题,否则只需使用

itertools.permutations('112233445566778899',5) 

应该做的伎俩。

编辑:包含重复,因为它有两个数字。将它包装成一组似乎可以解决这个问题:

set(itertools.permutations('112233445566778899',5))