Списки
В данной теме мы узнаем, что представляют собой списки и как начать работать с элементами списка. Списки позволяют хранить в одном месте взаимосвязанные данные, сколько бы их ни было - несколько элементов или несколько миллионов элементов. Работа со списками принадлежит к числу самых выдающихся возможностей Python, доступных для начинающего программиста. Операции со списками связывают воедино многие важные концепции в программировании.
Что такое список?
Список представляет собой набор элементов, следующих в определенном порядке. Вы можете создать список для хранения букв алфавита, цифр от 0 до 9 или имен всех членов вашей семьи. В список можно поместить любую информацию, причем данные в списке даже не обязаны быть как-то связаны друг с другом. Так как список обычно содержит более одного элемента, рекомендуется присваивать спискам имена во множественном числе: letters
, digits
, names
и так далее.
В языке Python список обозначается квадратными скобками []
, а отдельные элементы списка разделяются запятыми. Простой пример списка с фруктами:
Если вы вызовете функцию print(), Python выведет перечисление элементов списка в квадратных скобках
Разберемся, как обратиться к отдельным элементам в списке.
Обращение к элементам списка
Списки представляют собой упорядоченные наборы данных, поэтому для обращения к любому элементу списка следует сообщить Python позицию (индекс) нужного элемента. Чтобы обратиться к элементу в списке, укажите имя списка, за которым следует индекс элемента в квадратных скобках.
Например, первый фрукт выводится следующим образом
Когда мы запрашиваем один элемент из списка, Python возвращает только этот элемент без квадратных скобок или кавычек
Индексы начинаются с 0, а не с 1
Python считает, что первый элемент списка находится в позиции 0
, а не в позиции 1
. Этот принцип встречается в большинстве языков программирования и объясняется особенностями низкоуровневой реализации операций со списками. Если вы получаете неожиданные результаты, определите, не допустили ли вы простую ошибку "смещения на 1".
Второму элементу списка соответствует индекс 1
. В этой простой схеме индекс любого элемента вычисляется уменьшением на 1 его позиции в списке. Например, чтобы обратиться к четвертому элементу списка, следует запросить элемент с индексом 3
.
В следующем примере выводятся названия фруктов с индексами 1
и 3
При этом выводятся второй и четвертый элементы списка
В Python также существует специальный синтаксис для обращения к последнему элементу списка. Если запросить элемент с индексом -1
, Python всегда возвращает последний элемент в списке:
Этот синтаксис весьма полезен, потому что при работу со списками часто требуется обратиться к последним элементам, не зная точного количества элементов в списке. Синтаксис также распространяется на другие отрицательные значения индексов. Индекс -2
возвращает второй элемент от конца списка, индекс -3
- третий элемент от конца и так далее.
Изменение, добавление и удаление элементов
Как правило, вы будете создавать динамические списки; это означает, что во время выполнения программы в созданном вами списке будут добавляться и удаляться элементы.
Например, вы можете создать игру, в которой игрок должен стрелять по кораблям космических захватчиков. Исходный набор кораблей сохраняется в списке; каждый раз, когда вы сбиваете корабль, он удаляется из списка. Каждый раз, когда на экране появляется новый враг, он включается в список. Длина списка кораблей будет уменьшаться и увеличиваться по ходу игры.
Изменение элементов в списке
Синтаксис изменения элемента напоминает синтаксис обращения к элементу списка. Чтобы изменить элемент, укажите имя списка и индекс изменяемого элемента в квадратных скобках; далее задайте новое значение, которое должно быть присвоено элементу.
Допустим, имеется список фамилий студентов и первым элементом списка хранится строка "Иванов". Как изменить значение первого элемента?
В строке 1 определяется исходный список, в котором первый элемент содержит строку "Иванов"
. В строке 5 значение первого элемента заменяется строкой "Серегин"
. Из вывода видно, что первый элемент действительно изменился, тогда как остальные элементы списка сохранили прежние значения:
Изменить можно значение любого элемента в списке, не только первого.
Добавление элементов в список
Новые элементы могут добавляться в списки по разным причинам: например, для появления на экране новых космических кораблей, включения новых данных в визуализацию или добавления новых зарегистрированных пользователей на созданный вами сайт. Python предоставляет несколько способов добавления новых данных в существующие списки.
Присоединение элементов в конец списка
Простейший способ добавления новых элементов в список - присоединение элементов в конец списка. Используя список из предыдущего примера, добавим нового студента в конец списка
Функция append()
в строке 2 присоединяет строку "Васин"
в конец списка, другие элементы в списке остаются неизменными.
Функция append()
упрощает динамическое построение списков. Например, вы можете начать с пустого списка и добавлять в него элементы серией функций append()
.
Такой способ построения списков встречается очень часто, потому что данные, которые пользователь захочет сохранить в программе, часто становятся известными только после запуска программы. Чтобы пользователь мог управлять содержимым списка. начните с определения пустого списка, а затем присоединяйте к нему каждое новое значение.
Вставка элементов в список
Функция insert()
позволяет добавить новый элемент в произвольную позицию списка. Для этого следует указать индекс и значение нового элемента.
В этом примере в строке 2 значение "Афонин"
вставляется в начало списка. Функция insert()
выделяет свободное место в позиции 0 и сохраняет в нем значение "Афонин"
. Все остальные значения списка при этом сдвигаются на одну позицию вправо.
Удаление элементов из списка
Нередко возникает необходимость в удалении одного или нескольких элементов из списка.
Например, когда игрок сбивает корабль пришельца, этот корабль стоит удалить из списка активных врагов. Или когда пользователь решает удалить свою учетную запись в созданном вами веб-приложении, этот пользователь должен быть удален из списка активных пользователей.
Элементы удаляются из списка по позиции или по значению.
Удаление элемента с использованием команды del
Если вам неизвестна позиция элемента, который должен быть удален из списка, воспользуйтесь командой del
.
Команда del
позволяет удалить элемент из любой позиции списка, если вам известен его индекс. Например, вот как из списка удаляется второй элемент
В обоих примерах значение, удаленное из списка после использования команды del
, становится недоступным.
Удаление элемента с использованием функции pop()
Иногда значение, удаляемое из списка, должно как-то использоваться.
Допустим, вы хотите получить координаты x
и y
только что сбитого корабля пришельцев, чтобы изобразить взрыв в этой позиции. В веб-приложении пользователь, удаленный из списка активных участников, может быть добавлен в список неактивных и так далее.
Функция pop()
удаляет последний элемент из списка, но позволяет работать с ним после удаления.
В строке 2 значение извлекается из списка и сохраняется в переменной с именем expelled
. Вывод измененного списка в строке 4 показывает, что значение было удалено из списка. Затем мы выводим извлеченное значение в строке 7, демонстрируя, что удаленное значение остается доступным в программе.
Извлечение элементов из произвольной позиции списка
Функция pop()
может использоваться для удаления элемента в произвольной позиции списка; для этого следует указать индекс удаляемого элемента как аргумент функции pop()
Помните, что после каждого вызова pop()
элемент, с которым вы работаете, уже не находится в списке.
Если вы не уверены в том, какой из двух способов выбрать, команду del
или функцию pop()
- если вы собираетесь просто удалить элемент из списка, никак не используя его, выбирайте команду del
; если же вы намерены использовать элемент после удаления из списка, выбирайте функцию pop()
.
Удаление элементов по значению
Иногда позиция удаляемого элемента неизвестна. Если вы знаете только значение элемента, используйте функцию remove()
. В качестве аргумента функции указывается значение, которое требуется удалить
Ошибки индексирования при работе со списками
Когда программист только начинает работать со списками, он часто допускает одну характерную ошибку. Допустим, имеется список с тремя элементами, а программист написал программу так, что она запрашивает четвертый элемент
Python пытается вернуть элемент с индексом 3. Однако при поиске по списку ни один элемент не обладает индексом 3. Из-за смещения индексов на 1 эта ошибка весьма распространена. Люди думают, что третьим элементом является элемент с индексом 3, потому что они начинают отсчет с 1. Но для Python третьим является элемент с индексом 2, потому что индексирование начинается с 0.
Ошибка индексирования означает, что указанный индекс для данного списка является некорректным.
Помните, что для обращения к последнему элементу в списке используется индекс -1. Этот способ работает всегда, даже если размер списка изменился с момента последнего обращения к нему
Этот синтаксис порождает ошибку только в одном случае - при попытке получить последний элемент пустого списка
Список (массив) - это индексированная совокупность переменных.
Список в Python - это встроенный тип данных, представляющий собой одну из разновидностей структур данных. Структуру данных можно представить как сложную единицу, объединяющую в себе группу более простых. Каждая разновидность структур данных имеет свои особенности. Список - это изменяемая последовательность произвольных элементов.
В подавляющем большинстве других языков программирования есть широко используемый тип данных как массив. В Python такого встроенного типа нет. Однако списки - это по своей сути массивы за одним исключением. Составляющие массив элементы должны принадлежать одному типу данных, для списков в python такого ограничения нет.
Например, массив должен содержать только целые числа или только вещественные числа или только строки. Список также может содержать элементы только одного типа, что делает его внешне неотличимым от массива. Но вполне допустимо, чтобы в одном списке содержались как числа, так и строки, а также что-нибудь еще.
Создавать списки разными способами. Создадим его простым перечислением элементов
Итак, у нас имеется список, присвоенный переменной a
. В Python список определяется квадратными скобками. Он содержит четыре элемента. Если в программе нам понадобится весь этот список, мы получим доступ к нему, указав всего лишь одну переменную a
.
Элементы в списке упорядочены, имеет значение в каком порядке они расположены. Каждый элемент имеет свой индекс, или номер. Индексация начинается с нуля. В данном случае число 12
имеет индекс 0
, строка "текст"
индекс 2
. Чтобы извлечь конкретный элемент, надо после имени переменной указать в квадратных скобках индекс необходимого элемента
В Python существует также индексация с конца. Она начинается с -1
:
Списки изменяемы. Это значит, что в них можно добавлять элементы, удалять их, изменять существующие. Проще всего изменить значение элемента. Для этого надо обратиться к нему по индексу и перезаписать значение в заданной позиции
Добавлять и удалять лучше с помощью специальных встроенных функций списка
Списки можно объединять с помощью оператора сложения. Новый список будет содержать в себе последовательное содержимое двух списков
Last updated