如何解决从aaaa转到zzzz python
我需要找到一种使用python(aaaa,aaaab,aaa ... zzzz)从aaaa暴力到zzzz的方法。 与0000到9999类似。 是否有使用循环和列表的“魔术”方法?
解决方法
您可以使用itertools.product
简洁地完成此操作:
import itertools
import string
for 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','b'),'c'),# --Snip --
('a','x'),'y'),'z'),'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]))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。