for i in range(2):
r = []
print(f'r == {r} before append in iteration {i+1}')
r.append(i)
print(f'r == {r} after iteration {i+1}')
# OUTPUT
# r == [] before append in iteration 1
# r == [0] after append in iteration 1
# r == [] before append in iteration 2
# r == [1] after append in iteration 2
每次执行
results=[]
都会覆盖变量。以前保存在其中的任何结果都将被丢弃。你知道吗如果在所有循环之前执行,则最终内容将来自所有循环迭代。你知道吗
如果在任何循环中执行,则会丢弃该循环以前迭代的所有结果。最终值将来自该循环的最后一次迭代。你知道吗
如果在最内部的循环中执行,则只需从所有迭代中获取最后一个值。你知道吗
这是不同的,因为
results=[]
只是将列表重新初始化为空列表。因此,一旦代码执行results=[]
,存储在其中的所有数据都将被擦除。这取决于初始化此列表的位置。所有三个位置都处于for循环的不同级别,因此输出是不同的。你知道吗位置1将存储两个
for
循环的所有输出,这意味着i = 0
,j = 0, 1, 2
,然后i = 1
,j = 0, 1, 2
位置2将重新初始化列表两次,因为外部循环运行两次。因此它将存储对应于
i = 1
和j = 0, 1, 2
的数据,因为i = 0
的列表将被重写。你知道吗位置3将重新初始化列表六次,因为外循环运行两次,内循环运行三次(外循环每次迭代三次)。你知道吗
在下面的循环中可以看到正在发生的事情的简化版本:
不是
r
以[0, 1]
结束,而是以[1]
结束,因为您可以看到,在第一次迭代之后,您将r
重置为空列表[]
,然后再附加i
的下一个值。你知道吗相关问题 更多 >
编程相关推荐