为什么我只能在for循环中改变一个列表,当我使用括号时?

当我使用括号 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. 因此,当你给它赋值时,列表中的值就会改变。

本文来自投稿,不代表运维实战侠立场,如若转载,请注明出处:https://www.shizhanxia.com/309.html

(0)
上一篇 2022年6月29日 下午3:55
下一篇 2022年6月29日 下午3:55

相关推荐

发表评论

登录后才能评论