while 循环中的变量在 for 循环后不递增

Variable in while loop not incrementing after for loops

我正在尝试创建带循环的字母表的笛卡尔积。我有创建所需输出的 ​​for 循环,但由于某种原因,我的 while 循环中的 i 从未达到。

这个循环在 jupyter 实验室笔记本中永远 运行。

lower_az = [chr(ord('a') + i) for i in range(26)]
i=0
n=2
lst = lower_az.copy()
final_list = []
while i < n:
    for let in lst:
        for j in range(26):
            strng = let + lower_az[j]
            lst.append(strng)
    i += 1
    final_list.append(lst)

除非我遗漏了一些明显的东西,否则变量 i 应该递增直到达到 n 并在所需的字符串长度处停止 while 循环。

您正在更改正在迭代的列表。问题不在于 while 循环,而是迭代 for let in lst 时的 lst.append(strng)

@blue_note 是正确的 - Python 在您更改正在迭代的列表时表现不佳。

看起来这只是一个拼写错误:您已经 final_list 准备好接收元素了。要解决此问题,请更改:

            lst.append(strng)

            final_list.append(strng)

并删除 final_list.append(lst),您的程序似乎运行良好。