用户登录
用户注册

分享至

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

  • 作者: 疯狂的吹牛
  • 来源: 51数据库
  • 2022-10-28

问题描述

简单示例:

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. 可以使用迭代器对象修改列表项
  1. Lists can be modified in place using global list access Lists can
  2. List items can NOT be modified in place using the iterator object

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

All example code I can find uses the global list accessors to modify the list inplace. Is it so evil to modify a list iterator?

推荐答案

在 for obj in myList: 中,在每次迭代中,obj 是myList 中的元素.所以对 obj 的更改对 myList 的元素没有任何影响.

in for obj in myList:, in every iteration, obj is a (shallow) copy of the element in myList. So the change on the obj does nothing to myList's elements.

这与 Perl for my $obj (@myList) {}

软件
前端设计
程序设计
Java相关