Python 中有重复数字的有效方法吗?

Is there an efficient way of generating numbers with repeated digits in Python?

我正在尝试从 {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 循环等即可生成所有数字。

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

itertools.permutations('112233445566778899',5) 

应该可以解决问题。

编辑:包括重复,因为每个数字有两个。将它包裹在一个集合中似乎可以解决这个问题:

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