Python中优雅地从序列中删除项目的方法?

9 浏览
0 Comments

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'条目?)。有没有更优雅、更高效的解决方案呢?还有针对字典的解决方案呢?

0