如何使用迭代器修改可迭代元素?即如何在Python中获得写迭代器?
|
我非常喜欢Python语法,但是由于我来自C ++,所以我对Python的迭代器一无所知。在C ++中,有2种迭代器-常量和修改(非const)。在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:
句法?
没有找到相关结果
已邀请:
4 个回复
慰泥悍瓶
版画
翱抹村
不会创建任何惰性副本-它将列表中的确切对象一个接一个地分配给ѭ6。如果这些对象是可变的,则可以对其进行修改:
版画
您的示例使用字符串列表。字符串在Python中是不可变的,因此您无法对其进行修改。
蕉衫
剿畦缄饥小
python内部使用引用,而
和
都指向同一个
对象,说
代替
,而不是
引用。列表可以用作解决方法,但这绝不是优雅的方法。 迭代器就像a一样,它是实际的东西,但是无法“取消引用”,我可以想象添加此功能会破坏很多其他东西。 我认为
方法仍然是正确的方法。