В данной статье мы обсудим списки в 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

  1. Что такое списки в Python? Объясните на конкретных примерах.
  2. Как получить элемент списка Python?
  3. Как создать вложенный список в Python?
  4. Для чего используются списки в Python?

Заключение

Ух, немало информации мы только что изучили! Давайте, чтобы лучше запомнить, кратко резюмируем только что пройденный материал.

В этой статье по спискам Python мы сначала рассмотрели, как объявлять списки и получать к ним доступ. Здесь же мы изучили срезы и индексы списков. Затем мы рассмотрели, как удалять и переопределять элементы списка, либо весь список целиком.

Далее мы узнали о вложенных (многомерных) списках и о генераторах списков. Мы увидели как можно перебирать списки Python при помощи цикла for, как их объединять и какие операции можно с ними производить.

И наконец, мы рассмотрели некоторые встроенные функции и методы, которые можно использовать для работы со списками. Надеемся, что вам все понравилось и до новых встреч!

Если у вас остались вопросы, не стесняйтесь, пишите их в комментариях.

Перевод статьи Python List with Examples – A Complete Python List Tutorial.

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Scroll to Top