写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”条目?)。有没有更优雅的解决方案,或者至少更高效的方案呢?
使用字典怎么样?