如何使用python获取5个位置的组合中所有带有N
位数字的字母数字组合。
角色可以重复。
其余(5-N
)个字符应为字母。
我的意思的示例:
Number of digits = 1 should generate:
aygd3
2afvd
jde6a
Number of digits = 2 should generate:
ay5d3
2af8d
jde64
Number of digits = 3 should generate:
a15d3
26f8d
jd464
Number of digits = 4 should generate:
315d3
26f87
9d464
答案 0 :(得分:1)
递归生成。
请注意,5/2组合的文件大小为117 MBytes
17 576 000
个值(10^2 * 26^3 * C(5,2)
)
data = 'abcdefghijklmnopqrstuvwxyz0123456789'
def genld(s, maxlen, digs, digcnt):
le = len(s)
if (le == maxlen):
#print(s)
my_file.write(s + "\n")
else:
lo = 0 if (maxlen - le > digs - digcnt) else 26
hi = 26 if (digcnt == digs) else 36
for i in range(lo, hi):
genld(s + data[i], maxlen, digs, digcnt + i // 26)
my_file = open("out.txt", "w")
genld('', 5, 2, 0)
my_file.close()