Python中优雅地从序列中删除项目的方法?
- 论坛
- Python中优雅地从序列中删除项目的方法?
9 浏览
Python中优雅地从序列中删除项目的方法?
在使用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
这种方法效率低下,相当丑陋,可能还有bug(它如何处理多个'John Smith'条目?)。有没有更优雅、更高效的解决方案呢?还有针对字典的解决方案呢?