我非常喜欢 Python 语法,但由于我来自 C++,所以我对 Python 中的迭代器一无所知。在 C++ 中有 2 种迭代器 - 常量和修改(非常量)。在 python 中(就我所见而言)似乎只有第一种,如果你想修改元素,你必须使用索引,这让我感觉不舒服而且很通用。 让我用一个简单的例子来说明:
ab = ["a", "b"]
for (index, lett) in enumerate(ab):
print "Firstly, lett is ab[index]?", lett is ab[index]
lett = str(index)
print lett
print ab[index]
print "But after, lett is ab[index]?", lett is ab[index]
所以我无法使用迭代器修改列表。
正如我用 is
运算符发现的那样,它只是制作延迟副本(请参阅 Wikipedia ),所以有没有办法说我希望它成为直接修改迭代器而不是使用整洁的
for variable in iterable_object:
语法?
最佳答案
语法
for x in iterable
不创建任何惰性副本——它将列表中的确切对象一个接一个地分配给 x
。如果这些对象是可变的,您可以修改它们:
a = [[1, 2], [3, 4]]
for x in a:
x.append(5)
print a
打印
[[1, 2, 5], [3, 4, 5]]
您的示例使用字符串列表。字符串在 Python 中是不可变的,因此您无法修改它们。
关于python - 如何用迭代器修改可迭代对象的元素? IE。如何在 Python 中获取写迭代器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6432898/