我不了解在Python中通过列表列表进行迭代的方式。
作为示例,让我以以下简单的for循环为例:
lst = [[0,1],[2,3]]
for lt in lst:
print(lt)
预期打印的内容
[0, 1]
[2, 3]
每次迭代时的迭代变量lt
是lst
列表中的一个元素。
现在让我接受这段代码:
lst = [list()]*2
i = 0
for lt in lst:
print(i)
print(lt)
lt.append(i)
print(lt)
i += 1
print(lst)
在每次迭代中,我期望lt
是列表lst
的元素,因此它是一个列表。使用该迭代器,我尝试在每次迭代时仅将数字附加到lst
的元素(列表)中。换句话说,作为输出,我期望的像是[[0],[1]]
。
相反,此代码修改了lst
,因此最终是:
[[0, 1], [0, 1]]
不会像lt
那样用lst
的下一个元素的值“重新初始化”,而是保留上一次迭代的值。
那是为什么?