我需要在迭代时删除列表中的元素(我无法创建新列表,因为它在我无法控制的代码中被引用)。
我提出的最好的是:
last_index = len(somelist) - 1
for (index,item) in enumerate(reversed(somelist)):
if somecondition(item):
del somelist[last_index - index]
答案 0 :(得分:2)
你可以使用列表理解+切片分配,这当然更简洁 - 我不知道效率(虽然我希望它在这方面做得更好,因为你不需要继续转移每次删除项目时列表中的元素...)
somelist[:] = [ x for x in somelist if not somecondition(x) ]