在每次迭代中在嵌套for循环中添加迭代变量

时间:2017-12-08 20:37:03

标签: python-3.x loops nested-loops

我试图编写一个程序,打印两到四个字符之间的每个可能的字母组合。我现在的程序工作得很好,但实现远非理想。这就是现在的情况:

# make a list that contains ascii characters A to z
ascii = list(range(65, 123))
del ascii[91 - 65 : 97 - 65] # values 91-97 aren't letters

for c1, c2 in product(ascii, repeat=2):
    word = chr(c1) + chr(c2)
    print(word)

for c1, c2, c3 in product(ascii, repeat=3):
    word = chr(c1) + chr(c2) + chr(c3)
    print(word)

for c1, c2, c3, c4 in product(ascii, repeat=4):
    word = chr(c1) + chr(c2) + chr(c3) + chr(c4)
    print(word)

我更愿意在以下精神中拥有一些东西。请原谅我以下代码是完全错误的,我试图传达我认为更好的实现精神。

iterationvars = [c1, c2, c3, c4]

for i in range(2,5):
    for iterationvars[0:i] in product(ascii, repeat=i):
        word = ??
        print(word)

所以我有两个问题:
1)如何在'母循环的每次迭代中更改嵌套for循环的迭代变量数量? 2)如何实现 word ,使其动态地累加所有迭代变量,无论该特定迭代有多少。

当然,与我的建议完全不同的实现也非常受欢迎。非常感谢!

1 个答案:

答案 0 :(得分:0)

没有必要更改迭代变量的数量,只需将它们全部保存在一个元组中,然后使用连接列表理解。像这样的东西会起作用:

for iter_tuple in product(ascii, repeat = i):
    word = ''.join(chr(x) for x in iter_tuple)
    print(word)