УПРАЖНЕНИЯ
4-3 . Считаем до 20: используйте цикл for для вывода чисел от 1 до 20 включительно .
4-4 . Миллион: создайте список чисел от 1 до 1 000 000, затем воспользуйтесь циклом for
для вывода чисел . (Если вывод занимает слишком много времени, остановите его нажатием
Ctrl+C или закройте окно вывода .)
4-5 . Суммирование миллиона чисел: создайте список чисел от 1 до 1 000 000, затем вос-
пользуйтесь функциями min() и max() и убедитесь в том, что список действительно начи-
нается с 1 и заканчивается 1 000 000 . Вызовите функцию sum() и посмотрите, насколько
быстро Python сможет просуммировать миллион чисел .
4-6 . Нечетные числа: воспользуйтесь третьим аргументом функции range() для создания
списка нечетных чисел от 1 до 20 . Выведите все числа в цикле for .
4-7 . Тройки: создайте список чисел, кратных 3, в диапазоне от 3 до 30 . Выведите все числа
своего списка в цикле for .
4-8 . Кубы: результат возведения числа в третью степень называется кубом . Например,
куб 2 записывается в языке Python в виде 2**3 . Создайте список первых 10 кубов (то есть
кубов всех целых чисел от 1 до 10) и выведите значения всех кубов в цикле for .
4-9 . Генератор кубов: используйте конструкцию генератора списка для создания списка
первых 10 кубов .
Работа с частью списка 73
Работа с частью списка
В главе 3 вы узнали, как обращаться к отдельным элементам списка, а в этой главе
мы занимались перебором всех элементов списка. Также можно работать с конкрет-
ным подмножеством элементов списка; в Python такие подмножества называются
срезами (slices).
Создание среза
Чтобы создать срез списка, следует задать индексы первого и последнего элементов,
с которыми вы намереваетесь работать. Как и в случае с функцией
range()
, Python
останавливается на элементе, предшествующем второму индексу. Скажем, чтобы
вывести первые три элемента списка, запросите индексы с 0 по 3, и вы получите
элементы 0, 1 и 2.
В следующем примере используется список игроков команды:
players.py
players = ['charles', 'martina', 'michael', 'florence', 'eli']
print(players[0:3])
В точке выводится срез списка, включающий только первых трех игроков. Вывод
сохраняет структуру списка, но включает только первых трех игроков:
['charles', 'martina', 'michael']
Подмножество может включать любую часть списка. Например, чтобы ограничить-
ся вторым, третьим и четвертым элементами списка, срез начинается с индекса 1
и заканчивается на индексе 4:
players = ['charles', 'martina', 'michael', 'florence', 'eli']
print(players[1:4])
На этот раз срез начинается с элемента
'martina'
и заканчивается элементом
'florence'
:
['martina', 'michael', 'florence']
Если первый индекс среза не указан, то Python автоматически начинает срез
от начала списка:
players = ['charles', 'martina', 'michael', 'florence', 'eli']
print(players[:4])
Без начального индекса Python берет элементы от начала списка:
['charles', 'martina', 'michael', 'florence']
Аналогичный синтаксис работает и для срезов, включающих конец списка. Напри-
мер, если вам нужны все элементы с третьего до последнего, начните с индекса 2
и не указывайте второй индекс:
players = ['charles', 'martina', 'michael', 'florence', 'eli']
print(players[2:])
74 Глава 4 • Работа со списками
Python возвращает все элементы с третьего до конца списка:
['michael', 'florence', 'eli']
Этот синтаксис позволяет вывести все элементы от любой позиции до конца спи-
ска независимо от его длины. Вспомните, что отрицательный индекс возвращает
элемент, находящийся на заданном расстоянии от конца списка; следовательно, вы
можете получить любой срез от конца списка. Например, чтобы отобрать последних
трех игроков, используйте срез
players[-3:]
:
players = ['charles', 'martina', 'michael', 'florence', 'eli']
print(players[-3:])
Программа выводит имена трех последних игроков, причем продолжает работать
даже при изменении размера списка.
Перебор содержимого среза
Если вы хотите перебрать элементы, входящие в подмножество элементов, исполь-
зуйте срез в цикле
for
. В следующем примере программа перебирает первых трех
игроков и выводит их имена:
players = ['charles', 'martina', 'michael', 'florence', 'eli']
print("Here are the first three players on my team:")
for player in players[:3]:
print(player.title())
Вместо того чтобы перебирать весь список игроков , Python ограничивается
первыми тремя именами:
Here are the first three players on my team:
Charles
Martina
Michael
Срезы приносят огромную пользу во многих ситуациях. Например, при создании
компьютерной игры итоговый счет игрока может добавляться в список после
окончания текущей партии. После этого программа может получить три лучших ре-
зультата игрока, отсортировав список по уменьшению и получив срез, включающий
только три элемента. При работе с данными срезы могут использоваться для об-
работки данных блоками заданного размера. Или при построении веб-приложения
срезы могут использоваться для постраничного вывода информации так, чтобы
на каждой странице выводился соответствующий объем информации.
Копирование списка
Часто разработчик берет существующий список и создает на его основе совершенно
новый. Посмотрим, как работает копирование списков, и рассмотрим одну ситуа-
цию, в которой копирование списка может принести пользу.
Работа с частью списка 75
Чтобы скопировать список, создайте срез, включающий весь исходный список
без указания первого и второго индекса (
[:]
). Эта конструкция создает срез,
который начинается с первого элемента и завершается последним; в результате
создается копия всего списка.
Представьте, что вы создали список своих любимых блюд и теперь хотите создать
отдельный список блюд, которые нравятся вашему другу. Пока вашему другу
нравятся все блюда из нашего списка, поэтому вы можете создать другой список
простым копированием нашего:
Достарыңызбен бөлісу: |