#Position1:
#results=[]
for i in range(2):
#Position2:
results=[]
for j in range(3):
#Position3:
#results=[]
results.append(i+j)
print(results)
答案 0 :(得分:1)
这是不同的,因为results=[]
只是将列表重新初始化为空列表。因此,一旦您的代码执行results=[]
,存储在其中的所有数据都会被擦除。这取决于初始化此列表的位置。您的所有三个位置都处于for循环的不同级别,因此输出是不同的。
位置1 将存储两个for
循环的所有输出,这意味着分别对i = 0
,j = 0, 1, 2
和i = 1
,{{ 1}}
位置2 将两次重新初始化列表,因为您的外部循环运行了两次。因此它将存储与j = 0, 1, 2
和i = 1
对应的数据,因为j = 0, 1, 2
的列表将被覆盖。
位置3 将重新初始化列表六次,因为您的外循环运行两次,内循环运行三次(每次外循环迭代三次)。
答案 1 :(得分:0)
每次执行results=[]
时,都会覆盖该变量。保存在其中的所有先前结果都将被丢弃。
如果在所有循环之前执行此操作,则最终内容将来自所有循环迭代。
如果在任何循环中执行此操作,则将丢弃该循环以前的迭代中的所有结果。最终值将来自该循环的最后一次迭代。
如果在最内部的循环中执行此操作,则仅从所有迭代中获取最后一个值。
答案 2 :(得分:0)
正在发生的事情的简化版本可以在以下循环中看到:
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
它以r
结尾,而不是[0, 1]
以[1]
结尾,因为您可以看到在第一次迭代之后,您将r
重置为空列表{ {1}},然后再附加下一个值[]
。