Найдено результатов: 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'?). Есть ли у кого-нибудь более элегантное решение или, по крайней мере, более эффективное?

Как насчет того, что работает со словарями?

python   optimization   set   series    

530   14   07:59, 2nd August, 2020