我正在尝试从{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循环等。
答案 0 :(得分:4)
除非我误解了这个问题,否则只需使用
itertools.permutations('112233445566778899',5)
应该做的伎俩。
编辑:包含重复,因为它有两个数字。将它包装成一组似乎可以解决这个问题:
set(itertools.permutations('112233445566778899',5))