Учитывая список объектов, где каждый имеет свойство с именем x
, и я хочу удалить все объекты, свойство x
содержит значение v
из списка.Удалить элемент с определенным значением свойства из списка
Один способ сделать это, чтобы использовать список: [item for item in mylist if item.x != v]
, но так как мой список небольшой (обычно менее 10). Другой способ - перебрать список в цикле и проверить каждый отдельный элемент.
Есть ли третий способ, который быстрей или даже быстрее?
Если список невелик, вы не должны заботиться о скорости вообще. Напишите все, что более читаемо. –
оба способа, которые вы описали, функционально идентичны. зачем вам нужен третий способ? Кроме того, если ваш список невелик, нет практических оснований для его ускорения. – ozk
Опция «итерации и удаления», как правило, является ужасной идеей, так как вам нужно либо перебирать по индексу (громоздко, медленно и уродливо), либо использовать 'list.remove (value)', что означает, что вы будете перебирать по списку для каждого значения, значительно увеличивая сложность того, что вы делаете. Лучшим решением здесь является понимание списка (или выражение генератора). –