【发布时间】:2011-03-21 18:35:57
【问题描述】:
在循环中修改被迭代的序列是不安全的(这只会发生在可变序列类型上,例如列表)。如果您需要修改您正在迭代的列表(例如,复制所选项目),您必须迭代一个副本。切片符号使这变得特别方便:
>>> for x in a[:]: # make a slice copy of the entire list ... if len(x) > 6: a.insert(0, x) ... >>> a ['defenestrate', 'cat', 'window', 'defenestrate']
为什么只做for x in a 不安全??
【问题讨论】:
-
你尝试这样做时得到了什么输出?
-
我相信以下回答了您的问题。如果您不想复制整个列表,您还可以维护一个可以在迭代后运行的后期操作列表。
标签: python