猿问

从 aaaa 到 zzzz python

我需要找到一种使用 python 从 aaaa 暴力破解到 zzzz 的方法(aaaa、aaab、aaac...zzzz)。类似于 0000 到 9999。有没有一种“神奇”的方法可以使用循环和列表来做到这一点?



墨色风雨
浏览 1643回答 3
3回答

梵蒂冈之花

您可以使用以下方法简洁地完成此任务itertools.product:import itertoolsimport stringfor elem in itertools.product(string.ascii_lowercase, repeat=5):    ...以下是此方法生成的前 30 个值的示例:>>> values = itertools.product(string.ascii_lowercase, repeat=5)>>> print(list(itertools.islice(values, 30)))[    ('a', 'a', 'a', 'a', 'a'),     ('a', 'a', 'a', 'a', 'b'),     ('a', 'a', 'a', 'a', 'c'),     # --Snip --     ('a', 'a', 'a', 'a', 'x'),     ('a', 'a', 'a', 'a', 'y'),     ('a', 'a', 'a', 'a', 'z'),     ('a', 'a', 'a', 'b', 'a'),     ('a', 'a', 'a', 'b', 'b'),     ('a', 'a', 'a', 'b', 'c'),     ('a', 'a', 'a', 'b', 'd')]请注意,此序列中有26**5 == 11881376一些值,因此您可能不希望将它们全部存储在列表中。在我的系统上,这样的列表大约占用 100 MiB。

狐的传说

这是一个非常“基本”的例子:chars = 'abcdefghijklmnopqrstuvwxyz'my_list = []for c1 in chars:    for c2 in chars:        for c3 in chars:            for c4 in chars:                my_list.append(c1+c2+c3+c4)                print(my_list)

小唯快跑啊

知道你认为什么是“神奇的”并不容易,但我没有看到循环中的神奇之处。这是一种变体:cs = 'abcdefghijklmnopqrstuvwxyz'list(map(''.join, [(a,b,c,d) for a in cs for b in cs for c in cs for d in cs]))
随时随地看视频慕课网APP

相关分类

Python
我要回答