В данной статье мы обсудим списки в Python. Мы рассмотрим, как создавать списки, получать к ним доступ, применять срезы и переназначать их в Python. Затем мы увидим, как применять к ним функции. Наряду с этим мы обсудим операции со списками Python и их конкатенацию.
Итак, начнем!
Что такое списки в Python?
В отличие от C++ или Java, в языке программирования Python нет массивов. Таким образом, для хранения последовательности значений существует класс list
(список). Список в Python можно рассматривать как коллекцию значений.
Как создавать списки в Python
Чтобы создать список элементов в Python, вам просто достаточно указать элементы, разделенные запятыми, в квадратных скобках. Таков синтаксис Python, которому необходимо следовать. Затем присвойте его любой переменной. Отметим еще раз, что не нужно объявлять тип данных, так как Python имеет динамическую типизацию.
colors = ['red','green','blue']
Список Python может содержать различные типы значений.
days = ['Monday','Tuesday','Wednesday',4,5,6,7.0]
В список могут входить другие списки либо кортежи.
languages=[['English'],['Gujarati'],['Hindi'],'Romanian','Spanish'] languages # Результат: # [[‘English’], [‘Gujarati’], [‘Hindi’], ‘Romanian’, ‘Spanish’] type(languages[0]) # Результат: # <class ‘list’> anguages=[('English','Albanian'),'Gujarati','Hindi','Romanian','Spanish'] languages[0] # Результат: # (‘English’, ‘Romanian’) type(languages[0]) # Результат: # <class ‘tuple’> languages[0][0]='Albanian'
Результат:
Traceback (most recent call last):File “<pyshell#24>”, line 1, in <module> languages[0][0]=’Albanian’ TypeError: ‘tuple’ object does not support item assignment
Как получать доступ к спискам Python
Чтобы получить доступ к списку Python целиком, вам нужно только его имя.
days # Результат: # [‘Monday’, ‘Tuesday’, ‘Wednesday’, 4, 5, 6, 7.0]
Также можно использовать функцию print()
.
languages=[['English'],['Gujarati'],['Hindi'],'Romanian','Spanish'] print(languages) # Результат: # [[‘English’], [‘Gujarati’], [‘Hindi’], ‘Romanian’, ‘Spanish’]
Для получение доступа к одному конкретному элементу списка используется его индекс. Он указывается непосредственно после имени списка в квадратных скобках. Индексация начинается с 0
.
languages[0] # Результат: # [‘English’]
Индекс не может быть числом типа float
(с плавающей запятой), допускается только тип int
.
languages[1.0]
Результат:
Traceback (most recent call last):File “<pyshell#70>”, line 1, in <module> languages[1.0] TypeError: list indices must be integers or slices, not float
Применение срезов к спискам Python
Для получения только части списка используется оператор среза []
.
indices=['zero','one','two','three','four','five'] indices[2:4] # Результат: # [‘two’, ‘three’]
Мы получили список элементов с индексами в диапазоне от 2 до 4 – 1 (то есть 3).
indices[:4] # Результат: # [‘zero’, ‘one’, ‘two’, ‘three’]
Данный код вернул нам элементы начиная с начала списка (с индекса 0) до элемента под индексом 3 включительно.
indices[4:] # Результат: # [‘four’, ‘five’]
А данный код вернул нам элементы начиная со значения под индексом 4 и до конца списка.
indices[:] # Результат: # [‘zero’, ‘one’, ‘two’, ‘three’, ‘four’, ‘five’]
Данный код вернул нам весь список целиком.
Индексы могут быть также и отрицательными. В таком случае отсчет начинается с конца списка ( -1
относится к последнему элементу списка).
indices[:-2] # Результат: # [‘zero’, ‘one’, ‘two’, ‘three’]
Данный код вернул нам элементы под индексами в диапазоне от первого (индекс 0, включая его самого) до предпоследнего (индекс -2, исключая его самого).
indices[1:-2] # Результат: # [‘one’, ‘two’, ‘three’]
А вот данный код вернул нам элементы под индексами в диапазоне от второго (индекс 1, включая его самого) до предпоследнего (индекс -2, исключая его самого).
indices[-2:-1] # Результат: # [‘four’]
Данный же код возвращает нам элементы от предпоследнего (включая его самого) до последнего (исключая этот элемент). То есть просто предпоследний элемент списка.
indices[-1:-2] # Результат: # []
А этот код возвратил нам пустой список, так как индекс начала среза находится после индекса его завершения.
Переопределение списков Python
Списки в Python являются изменяемым типом данных. Это означает, что вы можете свободно переопределять его элементы или даже весь список целиком. Давайте для примеров создадим новый список:
colors = ['red','green','blue']
Переопределение списка целиком
Мы можем переопределить список в Python, просто сохранив в переменную, где он хранится, новый список.
colors = ['caramel','gold','silver','occur'] colors # Результат: # [‘caramel’, ‘gold’, ‘silver’, ‘occur’]
Переопределение нескольких элементов
Несколько элементов списка можно переопределить при помощи среза.
colors[2:]=['bronze','silver'] colors # Результат: # [‘caramel’, ‘gold’, ‘bronze’, ‘silver’]
Давайте посмотрим, что будет если мы поместим в наш срез сразу два индекса, начальный и конечный.
colors=['caramel','gold','silver','occur'] colors[2:3]=['bronze','silver'] colors # Результат: # [‘caramel’, ‘gold’, ‘bronze’, ‘silver’, ‘occur’]
Как можно заметить, был переопределен только третий элемент списка (под индексом 2).
Тоже самое можно сделать, использовав срез [2 : 2]
:
colors[2:2]=['occur'] colors # Результат: # [‘caramel’, ‘gold’, ‘bronze’, ‘silver’, ‘occur’]
Переопределение одного элемента
Также можно переопределять и отдельные элементы списка по одному.
colors = ['caramel','gold','silver','occur'] colors[3] = 'bronze' colors # Результат: # [‘caramel’, ‘gold’, ‘silver’, ‘bronze’]
Но если мы заходим таким образом добавить новый элемент в список, у нас ничего не выйдет. Например, давайте добавим в конец нашего списка элемент ‘holographic’
:
colors[4] = 'holographic'
Результат:
Traceback (most recent call last):File “<pyshell#2>”, line 1, in <module> colors[4]=’holographic’ IndexError: list assignment index out of range
Таким образом, нам придется переопределить весь список целиком:
colors = ['caramel','gold','silver','bronze','holographic'] colors # Результат: # [‘caramel’, ‘gold’, ‘silver’, ‘bronze’, ‘holographic’]
Также для данной операции существует встроенные методы, но о них речь пойдет далее.
Как можно удалять списки в Python?
Аналогичным образом, вы можете удалить весь список сразу, либо его часть, либо вообще отдельный элемент нашего списка.
Удаление списка целиком
Для данной операции существует инструкция del
.
del colors colors
Результат:
Traceback (most recent call last):File “<pyshell#51>”, line 1, in <module> colors NameError: name ‘colors’ is not defined
Удаление нескольких элементов списка
Для удаления нескольких элементов также можно использовать срезы.
colors=['caramel','gold','silver','bronze','holographic'] del colors[2:4] colors # Результат: # [‘caramel’, ‘gold’, ‘holographic’] colors[2] # Результат: # ‘holographic’
Как можно заметить, элемент ‘holographic’
имеет теперь индекс 2.
Удаление одного элемента списка
Чтобы удалить один элемент списка, используется его индекс.
del colors[0] colors # Результат: # [‘gold’, ‘holographic’]
Многомерные (или вложенные) списки в Python
В Python также можно помещать один список в другой. Давайте посмотрим на такой многомерный список:
grocery_list = [['caramel','P&B','Jelly'],['onions','potatoes'],['flour','oil']] grocery_list # Результат: # [[‘caramel’, ‘P&B’, ‘Jelly’], [‘onions’, ‘potatoes’], [‘flour’, ‘oil’]]
Это список grocery_list
(продукты) с списками отдельных категорий продуктов внутри него.
Также можно делать и более глубокие вложения:
a=[[[1,2],[3,4],5],[6,7]] a # Результат: # [[[1, 2], [3, 4], 5], [6, 7]]
Чтобы получить доступ к элементу со значением 4
, можно использовать следующий код:
a[0][1][1] # Результат: # 4
Объединение списков в Python
Для списков в Python также существует операция конкатенации (объединения) двух и более списков с сохранением порядка их элементов.
a, b = [3, 1, 2], [5, 4, 6] a + b # Результат: # [3, 1, 2, 5, 4, 6]
Операции со списками в Python
Умножение
Умножение списка Python на целое число n копирует его элементы n раз, сохраняя их порядок.
a *= 3 a # Результат: # [3, 1, 2, 3, 1, 2, 3, 1, 2]
Но на числа с плавающей запятой (тип float
) умножать нельзя.
a * 3.0
Результат:
Traceback (most recent call last):File “<pyshell#89>”, line 1, in <module> a*3.0 TypeError: can’t multiply sequence by non-int of type ‘float’
Операция включения
К списком в Python можно применять операторы in
и not in
.
1 in a # Результат: # True 2 not in a # Результат: # False
Итерирование списков
Список в Python можно перебрать при помощи цикла for
.
for i in [1,2,3]: if i%2==0: print(f"{i} is composite\n") # Результат: # 2 is composite
Генераторы списков Python
Есть еще один способ для создания списков в Python. Для этого надо написать выражение перед оператором for и заключить все это в квадратные скобки. Результат можно сохранить в переменную. Давайте для примера создадим список целых чисел от 1 до 20:
even = [2 * i for i in range(1,11)] even # Результат: # [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
При желании, для фильтрации элементов списка, можно также добавить оператор if
. Давайте изменим нашу задачу и создадим список, состоящий из четных чисел от 1 до 20, которые делятся при этом на 3 без остатка.
even=[2*i for i in range(1,11) if i%3==0] even # Результат: # [6, 12, 18]
Встроенные функции для работы со списками в Python
В языке Python есть несколько встроенных функций, которые можно использовать при работе со списками.

Функция len()
Данная функция вычисляет длину списка, то есть количество элементов в нем.
len(even) # Результат: # 3
Функция max()
Функция max()
возвращает максимальный элемент списка.
max(even) # Результат: # 18
Если список состоит из строковых значений, то их также можно сравнить друг с другом.
max(['1', '2', '3']) # Результат: # '3'
Но если в списке присутствуют элементы разных типов, данная функция вызовет ошибку.
max([2, '1', '2'])
Результат:
Traceback (most recent call last):File “<pyshell#116>”, line 1, in <module> max([2,’1′,’2′]) TypeError: ‘>’ not supported between instances of ‘str’ and ‘int’
Функция min()
Эта функция возвращает минимальное значение из списка Python.
min(even) # Результат: # 6
Функция sum()
Данная функция возвращает сумму всех элементов списка.
sum(even) # Результат: # 36
Однако, для корректной работы данной функции, все значения списка должны быть численными.
a = ['1', '2', '3'] sum(a)
Результат:
Traceback (most recent call last):File “<pyshell#112>”, line 1, in <module> sum(a) TypeError: unsupported operand type(s) for +: ‘int’ and ‘str’
Значения с плавающей запятой (тип float
) допускаются.
sum([1.1, 2.2, 3.3]) # Результат: # 6.6
Функция sorted()
Эта функция возвращает отсортированную версию списка. Сам список при этом остается неизмененным.
a = [3, 1, 2] sorted(a) # Результат: # [1, 2, 3] a # Результат: # [3, 1, 2]
Если элементы списка Python являются строками, то сортировка производится в соответствии со значениями их ASCII-кодов.
sorted(['hello', 'hell', 'Hello']) # Результат: # [‘Hello’, ‘hell’, ‘hello’]
Так как ASCII-код символа H имеет код 72, он стоит первым.
Функция list()
Эта функция используется для преобразования других типов данных в списки.
list("abc") # Результат: # [‘a’, ‘b’, ‘c’]
Но обычное число преобразовать в список при помощи функции list()
нельзя. Она может принимать на вход только итерируемые величины.
list(2)
Результат:
Traceback (most recent call last):File “<pyshell#122>”, line 1, in <module> list(2) TypeError: ‘int’ object is not iterable
Функция any()
Данная функция возвращает True
, если хотя бы один элемент в списке Python имеет значение True
. В противном случае, а также если список пуст, она возвращает False
.
any(['', '', '1']) # Результат: # True any([]) # Результат: # False
Функция all()
Данная функция возвращает True
, если все элементы в списке имеют значение True
. Для пустого списка также возвращается True
.
all(['','','1']) # Результат: # False all([]) # Результат: # True
Встроенные методы списков в Python
В то время как функция — это то, что можно применить к некоторой конструкции и получить определенный результат, метод — это то, что может изменить саму эту конструкцию. Для вызова метода над определенным объектом используется оператор точка (dot) ‘.
‘. Для изменения списков в Python существует определенное количество встроенных методов.

Метод append()
Данный метод добавляет элементы в конец списка.
a # Результат: # [2, 1, 3] a.append(4) # Результат: # [2, 1, 3, 4]
Метод insert()
Этот метод вставляет элемент на определенную позицию.
a.insert(3,5) a # Результат: # [2, 1, 3, 5, 4]
Таким образом, элемент со значением 5 был вставлен по индексу 3.
Метод remove()
Данный метод удаляет первый экземпляр элемента (указанного в качестве аргумента метода) из списка Python.
a = [2, 1, 3, 5, 2, 4] a.remove(2) a # Результат: # [1, 3, 5, 2, 4]
Заметим, что у нас было два элемента со значением 2 и второй из них остался на месте.
Метод pop()
Этот метод удаляет элемент по указанному индексу и выводит его на экран.
a.pop(3) # Результат: # 2 a # Результат: # [1, 3, 5, 4]
Метод clear()
Данный метод полностью очищает список Python.
a.clear() a # Результат: # [] bool(a) # Результат: # False
Метод index()
Этот метод возвращает индекс найденного элемента.
a = [1, 3, 5, 3, 4] a.index(3) # Результат: # 1
Метод count()
Данный метод возвращает нам количество вхождений в список указанного элемента.
a.count(3) # Результат: # 2
Метод sort()
Этот метод сортирует список в порядке возрастания.
a.sort() a # Результат: # [1, 3, 3, 4, 5]
Метод reverse()
Данный метод меняет порядок элементов списка на обратный.
a.reverse() a # Результат: # [5, 4, 3, 3, 1]
На этом про списки Python пока всё.
Вопросы с собеседований про списки Python
- Что такое списки в Python? Объясните на конкретных примерах.
- Как получить элемент списка Python?
- Как создать вложенный список в Python?
- Для чего используются списки в Python?
Заключение
Ух, немало информации мы только что изучили! Давайте, чтобы лучше запомнить, кратко резюмируем только что пройденный материал.
В этой статье по спискам Python мы сначала рассмотрели, как объявлять списки и получать к ним доступ. Здесь же мы изучили срезы и индексы списков. Затем мы рассмотрели, как удалять и переопределять элементы списка, либо весь список целиком.
Далее мы узнали о вложенных (многомерных) списках и о генераторах списков. Мы увидели как можно перебирать списки Python при помощи цикла for, как их объединять и какие операции можно с ними производить.
И наконец, мы рассмотрели некоторые встроенные функции и методы, которые можно использовать для работы со списками. Надеемся, что вам все понравилось и до новых встреч!
Если у вас остались вопросы, не стесняйтесь, пишите их в комментариях.
Перевод статьи Python List with Examples – A Complete Python List Tutorial.