当我使用括号 item
在第二个例子中,可以改变列表。
list1 = [[1, 2]]
for item in list1:
item = [88, 88]
print(list1)
-----------------
list2 = [[[1, 2]]]
for item in list2:
item[0] = [88, 88]
print(list2)
输出。
[[1, 2]]
[[[88, 88]]]
我搜索了一下,发现 item
只是元素的临时名称,而不是项目本身。不是项目本身。所以为什么在添加 []
到 “item “的时候,列表本身可以被改变吗?
解决方案:
首先,我认为你应该阅读一下关于 迭代在python中.
只是为了澄清事情。
list1 = [[1, 2]]
意思是你有list1
含有一个列表,该列表包含[1,2]
在list1[0]
.list2 = [[[1, 2]]]
意味着你已经list2
列表[[1, 2]]
.
其次,为了改变列表中第一项的值,从 [1,2]
到 [88,88]
,你可以写。
list1 = [[1, 2]]
for item in list1:
item[0] = 88
item[1] = 88
print(list1)
输出。
[[88, 88]]
现在,我们来解释一下。
对于for循环的每一次迭代,都会有一个变量 item
被分配的只是列表中一个项目的值的副本,所以对 item
不会反映在列表中。
这就是为什么在你的第一次尝试中,(用 list1
),当你在列表上迭代——。item = [88, 88]
只改变了副本,而不是实际的列表(这里的副本是列表的副本 [1,2]
).
在你的第二次尝试中,即
for item in list2:
item[0] = [88, 88]
在for循环的每一次迭代中,你都会访问到 item[0]
的副本。参考 到第一个元素 item
. 因此,当你给它赋值时,列表中的值就会改变。