【发布时间】:2022-01-25 07:00:33
【问题描述】:
两个 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]]
【问题讨论】:
-
你能解释一下你期望得到什么吗?
-
它不起作用的一个原因是因为您没有在第一个 for 循环中为
t分配任何东西。所以t不会改变。 -
@Ouroborus 绝对不正确。它确实为您提供了所有内置容器的对象本身,以及几乎任何您可能使用的实现迭代的容器,可能有一些例外,但绝对不是这里
-
"两个 for 循环完全相同" 不,它们根本不一样。
-
@juanpa.arrivillaga 是的,我意识到这是因为他们分配给 temp 变量,这当然不会影响原始列表。 (然后就是不允许修改您正在迭代的列表。)
标签: python arrays list for-loop