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

查看:278
本文介绍了不允许在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]

while:

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. 列表项可以使用迭代器对象 NOT 进行修改

  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?

推荐答案

中为myList中的obj :,在每次迭代中, 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.

我的$ obj(@myList){}

It's different with the Perl for my $obj (@myList) {}

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

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