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

Modifying a list iterator in Python not allowed?(不允许在 Python 中修改列表迭代器?)
本文介绍了不允许在 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 中修改列表迭代器?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

python arbitrarily incrementing an iterator inside a loop(python在循环内任意递增迭代器)
Joining a set of ordered-integer yielding Python iterators(加入一组产生 Python 迭代器的有序整数)
Iterating over dictionary items(), values(), keys() in Python 3(在 Python 3 中迭代字典 items()、values()、keys())
What is the Perl version of a Python iterator?(Python 迭代器的 Perl 版本是什么?)
How to create a generator/iterator with the Python C API?(如何使用 Python C API 创建生成器/迭代器?)
Python generator behaviour(Python 生成器行为)