Удаление элементов по значению

We use cookies. Read the Privacy and Cookie Policy

Иногда позиция удаляемого элемента неизвестна. Если вы знаете только значение элемента, используйте метод remove().

Допустим, из списка нужно удалить значение 'ducati':

motorcycles = ['honda', 'yamaha', 'suzuki', 'ducati']

print(motorcycles)

(1) motorcycles.remove('ducati')

print(motorcycles)

Код в точке (1) приказывает Python определить, в какой позиции списка находится значение 'ducati', и удалить этот элемент:

['honda', 'yamaha', 'suzuki', 'ducati']

['honda', 'yamaha', 'suzuki']

Метод remove() также может использоваться для работы со значением, которое удаляется из списка. Следующая программа удаляет значение 'ducati' и выводит причину удаления:

(1) motorcycles = ['honda', 'yamaha', 'suzuki', 'ducati']

print(motorcycles)

(2)too_expensive = 'ducati'

(3)motorcycles.remove(too_expensive)

print(motorcycles)

(4)print(" A " + too_expensive.title() + " is too expensive for me.")

После определения списка в точке (1) значение 'ducati' сохраняется в переменной с именем too_expensive в точке (2). Затем эта переменная сообщает Python, какое значение должно быть удалено из списка (3). В точке (4) значение 'ducati' было удалено из списка, но продолжает храниться в переменной too_expensive, что позволяет вывести сообщение с причиной удаления 'ducati' из списка мотоциклов:

['honda', 'yamaha', 'suzuki', 'ducati']

['honda', 'yamaha', 'suzuki']

A Ducati is too expensive for me.

примечание

Метод remove() удаляет только первое вхождение заданного значения. Если существует вероятность того, что значение встречается в списке более одного раза, используйте цикл для определения того, были ли удалены все вхождения данного значения. О том, как это делать, рассказано в главе 7.

Упражнения

Следующие упражнения немного сложнее упражнений из главы 2, но они предоставляют возможность попрактиковаться в выполнении всех описанных операций со списками.

3-4. Список гостей: если бы вы могли пригласить кого угодно (из живых или умерших) на обед, то кого бы вы пригласили? Создайте список, включающий минимум трех людей, которых вам хотелось бы пригласить на обед. Затем используйте этот список для вывода пригласительного сообщения каждому участнику.

3-5. Изменение списка гостей: вы только что узнали, что один из гостей прийти не сможет, поэтому вам придется разослать новые приглашения. Отсутствующего гостя нужно заменить кем-то другим.

• Начните с программы из упражнения 3-4. Добавьте в конец программы команду print для вывода имени гостя, который прийти не сможет.

• Измените список и замените имя гостя, который прийти не сможет, именем нового приглашенного.

• Выведите новый набор сообщений с приглашениями – по одному для каждого участника, входящего в список.

3-6. Больше гостей: вы решили купить обеденный стол большего размера. Дополнительные места позволяют пригласить на обед еще трех гостей.

• Начните с программы из упражнения 3-4 или 3-5. Добавьте в конец программы команду print, которая выводит сообщение о расширении списка гостей.

• Добавьте вызов insert() для добавления одного гостя в начало списка.

• Добавьте вызов insert() для добавления одного гостя в середину списка.

• Добавьте вызов append() для добавления одного гостя в конец списка.

• Выведите новый набор сообщений с приглашениями – по одному для каждого участника, входящего в список.

3-7. Сокращение списка гостей: только что выяснилось, что новый обеденный стол привезти вовремя не успеют, и места хватит только для двух гостей.

• Начните с программы из упражнения 3-6. Добавьте команду для вывода сообщения о том, что на обед приглашаются всего два гостя.

• Используйте метод pop() для последовательного удаления гостей из списка до тех пор, пока в списке не останутся только два человека. Каждый раз, когда из списка удаляется очередное имя, выведите для этого человека сообщение о том, что вы сожалеете об отмене приглашения.

• Выведите сообщение для каждого из двух человек, остающихся в списке. Сообщение должно подтверждать, что более раннее приглашение остается в силе.

• Используйте команду del для удаления двух последних имен, чтобы список остался ­пустым. Выведите список, чтобы убедиться в том, что в конце работы программы список действительно не содержит ни одного элемента.