gpt4 book ai didi

python - 不允许在 Python 中修改列表迭代器?

转载 作者:太空狗 更新时间:2023-10-29 20:36:45 25 4
gpt4 key购买 nike

简单的例子:

myList = [1, 2, 3, 4, 5]
for obj in myList:
obj += 1
print myList

打印

[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5]

同时:

myList = [1, 2, 3, 4, 5]
for index in range(0,len(myList)):
myList[index] += 1
print myList

打印

[1, 2, 3, 4, 5]
[2, 3, 4, 5, 6]

结论:

  1. 可以使用全局列表访问就地修改列表 列表可以
  2. 列表项不能使用迭代器对象修改

我能找到的所有示例代码都使用全局列表访问器来就地修改列表。修改一个列表迭代器有那么邪恶吗?

最佳答案

obj += 1 没有按照您的预期执行的原因是该语句没有就地修改 obj。相反,它会计算新值,并重新绑定(bind) 变量 obj 以指向新值。这意味着列表的内容保持不变。

一般来说,可以在使用 for obj in myList 遍历列表时修改列表。例如:

myList = [[1], [2], [3], [4], [5]]
for obj in myList:
obj[0] += 1
print(myList)

打印出来:

[[2], [3], [4], [5], [6]]

此示例与您的第一个示例之间的区别在于,此处的列表包含可变 对象,并且代码会就地修改这些对象。

请注意,也可以使用列表理解来编写循环:

myList = [val+1 for val in myList]

关于python - 不允许在 Python 中修改列表迭代器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9414399/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com