3 回答
TA贡献1900条经验 获得超5个赞
您可以使用以下方法简洁地完成此任务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', '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。
TA贡献1804条经验 获得超3个赞
这是一个非常“基本”的例子:
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)
TA贡献1863条经验 获得超2个赞
知道你认为什么是“神奇的”并不容易,但我没有看到循环中的神奇之处。
这是一种变体:
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]))
添加回答
举报