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))
我正在尝试从 {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))