Результаты поиска
Найдено результатов: 1
Элегантный способ удаления элементов из последовательности в 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
Это неэффективно, довольно уродливо и, возможно, глючно (как он обрабатывает несколько записей 'John Smith'?). Есть ли у кого-нибудь более элегантное решение или, по крайней мере, более эффективное?
Как насчет того, что работает со словарями?