ПРИМЕЧАНИЕ
Метод remove() удаляет только первое вхождение заданного значения . Если существует вероят-
ность того, что значение встречается в списке более одного раза, используйте цикл для опреде-
ления того, были ли удалены все вхождения данного значения . О том, как это делать, рассказано
в главе 7 .
УПРАЖНЕНИЯ
Следующие упражнения немного сложнее упражнений из главы 2, но они предоставляют
возможность попрактиковаться в выполнении всех описанных операций со списками .
3-4 . Список гостей: если бы вы могли пригласить кого угодно (из живых или умерших)
на обед, то кого бы вы пригласили? Создайте список, включающий минимум трех людей,
которых вам хотелось бы пригласить на обед . Затем используйте этот список для вывода
пригласительного сообщения каждому участнику .
56
Глава 3 • Списки
3-5 . Изменение списка гостей: вы только что узнали, что один из гостей прийти не сможет,
поэтому вам придется разослать новые приглашения . Отсутствующего гостя нужно заме-
нить кем-то другим .
• Начните с программы из упражнения 3-4 . Добавьте в конец программы команду print
для вывода имени гостя, который прийти не сможет .
• Измените список и замените имя гостя, который прийти не сможет, именем нового
приглашенного .
• Выведите новый набор сообщений с приглашениями – по одному для каждого участ-
ника, входящего в список .
3-6 . Больше гостей: вы решили купить обеденный стол большего размера . Дополнительные
места позволяют пригласить на обед еще трех гостей .
• Начните с программы из упражнения 3-4 или 3-5 . Добавьте в конец программы коман-
ду print, которая выводит сообщение о расширении списка гостей .
• Добавьте вызов insert() для добавления одного гостя в начало списка .
• Добавьте вызов insert() для добавления одного гостя в середину списка .
• Добавьте вызов append() для добавления одного гостя в конец списка .
• Выведите новый набор сообщений с приглашениями – по одному для каждого участ-
ника, входящего в список .
3-7 . Сокращение списка гостей: только что выяснилось, что новый обеденный стол привез-
ти вовремя не успеют, и места хватит только для двух гостей .
• Начните с программы из упражнения 3-6 . Добавьте команду для вывода сообщения
о том, что на обед приглашаются всего два гостя .
• Используйте метод pop() для последовательного удаления гостей из списка до тех
пор, пока в списке не останутся только два человека . Каждый раз, когда из списка
удаляется очередное имя, выведите для этого человека сообщение о том, что вы со-
жалеете об отмене приглашения .
• Выведите сообщение для каждого из двух человек, остающихся в списке . Сообщение
должно подтверждать, что более раннее приглашение остается в силе .
• Используйте команду del для удаления двух последних имен, чтобы список остался
пустым . Выведите список, чтобы убедиться в том, что в конце работы программы
список действительно не содержит ни одного элемента .
Упорядочение списка
Нередко список создается в непредсказуемом порядке, потому что порядок полу-
чения данных от пользователя не всегда находится под вашим контролем. И хотя
во многих случаях такое положение дел неизбежно, часто требуется вывести
информацию в определенном порядке. В одних случаях требуется сохранить
исходный порядок элементов в списке, в других исходный порядок должен быть
изменен. Python предоставляет в распоряжение программиста несколько разных
способов упорядочения списка в зависимости от ситуации.
Постоянная сортировка списка методом sort()
Метод
sort()
позволяет относительно легко отсортировать список. Предположим,
имеется список машин, и вы хотите переупорядочить эти элементы по алфавиту.
Упорядочение списка
57
Чтобы упростить задачу, предположим, что все значения в списке состоят из сим-
волов нижнего регистра.
cars.py
cars = ['bmw', 'audi', 'toyota', 'subaru']
cars.sort()
print(cars)
Метод
sort()
в точке
осуществляет постоянное изменение порядка элементов
в списке. Названия машин располагаются в алфавитном порядке, и вернуться к ис-
ходному порядку уже не удастся:
['audi', 'bmw', 'subaru', 'toyota']
Список также можно отсортировать в обратном алфавитном порядке; для этого
методу
sort()
следует передать аргумент
reverse=True
. В следующем примере
список сортируется в порядке, обратном алфавитному:
cars = ['bmw', 'audi', 'toyota', 'subaru']
cars.sort(reverse=True)
print(cars)
И снова порядок элементов изменяется на постоянной основе:
['toyota', 'subaru', 'bmw', 'audi']
Временная сортировка списка функцией sorted()
Чтобы сохранить исходный порядок элементов списка, но временно представить их
в отсортированном порядке, можно воспользоваться функцией
sorted()
. Функция
sorted()
позволяет представить список в определенном порядке, но не изменяет
фактического порядка элементов в списке.
Попробуем применить эту функцию к списку машин.
cars = ['bmw', 'audi', 'toyota', 'subaru']
print("Here is the original list:")
print(cars)
print("\nHere is the sorted list:")
print(sorted(cars))
print("\nHere is the original list again:")
print(cars)
Сначала список выводится в исходном порядке
, а затем в алфавитном
. После
того как список будет выведен в новом порядке, в точке
, мы убеждаемся в том,
что список все еще хранится в исходном порядке.
Here is the original list:
['bmw', 'audi', 'toyota', 'subaru']
Here is the sorted list:
|