从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]))