Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我需要在迭代列表时从列表中删除元素(我无法创建新列表,因为它在我无法控制的代码中被引用)。
我想出的最好的是:
last_index = len(somelist) - 1 for (index,item) in enumerate(reversed(somelist)): if somecondition(item): del somelist[last_index - index]
有更好的选择吗?我已经看过这篇文章和这篇文章,但是所提供的解决方案都没有那么高效或简洁(恕我直言)。
您可以使用列表理解+切片分配,这当然更简洁——我不知道效率(尽管我希望它在这方面做得更好,因为您不需要在每次删除项目时列出...)
somelist[:] = [ x for x in somelist if not somecondition(x) ]