【发布时间】:2010-09-06 07:32:20
【问题描述】:
当我在 Python 中编写代码时,我经常需要根据某些条件从列表或其他序列类型中删除项目。我还没有找到优雅高效的解决方案,因为从您当前正在迭代的列表中删除项目是不好的。例如,您不能这样做:
for name in names:
if name[-5:] == 'Smith':
names.remove(name)
我通常会做这样的事情:
toremove = []
for name in names:
if name[-5:] == 'Smith':
toremove.append(name)
for name in toremove:
names.remove(name)
del toremove
这是低效的,相当丑陋的并且可能有错误(它如何处理多个“John Smith”条目?)。有没有人有更优雅的解决方案,或者至少是更有效的解决方案?
使用字典的那个怎么样?
【问题讨论】:
-
您的代码确实删除了多个 Smiths,还是您对其进行了编辑?
标签: python optimization set series