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)
,您的程序似乎运行良好。
我正在尝试创建带循环的字母表的笛卡尔积。我有创建所需输出的 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)
,您的程序似乎运行良好。