为什么两个 for 循环的结果不同?
Why is there a difference in the results of both the for loops?
两个 for 循环完全相同,但我不明白为什么第一个 for 循环不起作用。
t = [[1,0],[2,0]]
z = [[1,0],[2,0]]
for i in t:
i = [x for x in i if x!=0]
for i in range(len(z)):
z[i] = [x for x in z[i] if x!=0]
print(t)
print(z)
输出:
[[1, 0], [2, 0]]
[[1], [2]]
第一个循环只是覆盖临时变量 i
而不是将该数据写回数组。
for i in t:
# saves data back to loop variable i
i = [x for x in i if x!=0]
for i in range(len(z)):
# saves data to this index in array z
z[i] = [x for x in z[i] if x!=0]
当你给i
赋一个新值时,你并没有改变i
最初引用的数据(数组t
中的数据)。相反,您导致 i
引用新数据。数组保持不变,除非您明确更改它 - 就像您在第二个循环中所做的那样。
两个 for 循环完全相同,但我不明白为什么第一个 for 循环不起作用。
t = [[1,0],[2,0]]
z = [[1,0],[2,0]]
for i in t:
i = [x for x in i if x!=0]
for i in range(len(z)):
z[i] = [x for x in z[i] if x!=0]
print(t)
print(z)
输出:
[[1, 0], [2, 0]]
[[1], [2]]
第一个循环只是覆盖临时变量 i
而不是将该数据写回数组。
for i in t:
# saves data back to loop variable i
i = [x for x in i if x!=0]
for i in range(len(z)):
# saves data to this index in array z
z[i] = [x for x in z[i] if x!=0]
当你给i
赋一个新值时,你并没有改变i
最初引用的数据(数组t
中的数据)。相反,您导致 i
引用新数据。数组保持不变,除非您明确更改它 - 就像您在第二个循环中所做的那样。