不允许在 Python 中修改列表迭代器? [英] Modifying a list iterator in Python not allowed?

查看:22
本文介绍了不允许在 Python 中修改列表迭代器?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

简单示例:

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: 中,在每次迭代中,objmyList 中的元素.所以对 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) {}

这篇关于不允许在 Python 中修改列表迭代器?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆