5

所以我需要一个函数来生成从a增加并以zzz结尾的字母列表。

应该是这样的:

a
b
c
...
aa
ab
ac
...
zzx
zzy
zzz

我目前拥有的代码是这样的:

for combo in product(ascii_lowercase, repeat=3):
            print(''.join(combo))

但是,这确实只增加了 3 个字母,并且输出更像

a
ab
abc
abcd
...

所以,回顾一下:字母增加的函数,当它超过 z 时,它返回到 aa。谢谢!


更新:

我的输出和以前一样。这是我试图将其插入的内容:

a = hashlib.md5()
for chars in chain(ALC, product(ALC, repeat=1), product(ALC, repeat=1)):
    a.update(chars.encode('utf-8'))
    print(''.join(chars))
    print(a.hexdigest())

我的哈希结果如下:

f1784031a03a8f5b11ead16ab90cc18e

但我希望:

415290769594460e2e485922904f345d

谢谢!

4

2 回答 2

11

添加另一个循环:

for x in range(1, 4):
    for combo in product(ascii_lowercase, repeat=x):
        print(''.join(combo))

输出如下:

a
...
aa
...
aaa
...
zzz

...大量的组合在哪里。

于 2014-05-15T18:57:10.453 回答
8
from string import ascii_lowercase as ALC
from itertools import chain, product

for chars in chain(ALC, product(ALC, repeat=2), product(ALC, repeat=3)):
    print(''.join(chars))

回应问题更新

我尝试了所有方法,但无法得到415290769594460e2e485922904f345d您提到的期望..所以我不知道您是如何计算期望的。

product                       : 1a431d62ddd9e78e1b22f8245ad945d0
permutations                  : 52d2529adf73975a4ca82bc7e25db4c6
combinations                  : 52bf3fcd925b2fdc1c52df70b7e33cbb
combinations_with_replacement : 421d5ff16fc211ae253fcc3e81eeb262
于 2014-05-15T18:58:44.810 回答