Python: список (list)

В Python списки позволяют хранить несколько элементов в одной переменной. Например, если вам нужно сохранить возраст всех студентов в классе, вы можете сделать это с помощью списка.

Списки похожи на массивы (динамические массивы, позволяющие хранить элементы разных типов данных) в других языках программирования.


Создание списка в Python

Мы создаём список, помещая элементы внутри квадратных скобок [] через запятую. Например,

# список из трёх элементов
ages = [19, 26, 29]
print(ages)

Вывод

[19, 26, 29]

Здесь список ages содержит три элемента.

Элементы списка разных типов

Списки в Python очень гибкие. Мы можем хранить в списке данные разных типов. Например,

# список со строками, числами и другим списком
student = ['Jack', 32, 'Computer Science', [2, 4]]
print(student)

# пустой список
empty_list = []
print(empty_list)

Характеристики списка

В Python списки:

  • Упорядочены — они сохраняют порядок элементов.

  • Изменяемы — элементы можно изменять после создания.

  • Допускают дубликаты — могут содержать повторяющиеся значения.


Доступ к элементам списка

Каждый элемент в списке связан с числом, известным как индекс. Индекс первого элемента — 0, второго — 1, и так далее.

Индексы элементов списка

Мы используем эти индексы для доступа к элементам списка. Например,

languages = ['Python', 'Swift', 'C++']

# доступ к первому элементу
print('languages[0] =', languages[0])

# доступ к третьему элементу
print('languages[2] =', languages[2])

Вывод

languages[0] = Python
languages[2] = C++
Доступ к элементам списка по индексу

Отрицательные индексы

В Python список может также иметь отрицательные индексы. Индекс последнего элемента — -1, предпоследнего — -2, и так далее.

Отрицательная индексация в Python

Рассмотрим пример.

languages = ['Python', 'Swift', 'C++']

# доступ к последнему элементу
print('languages[-1] =', languages[-1])

# доступ к третьему элементу с конца
print('languages[-3] =', languages[-3])

Вывод

languages[-1] = C++
languages[-3] = Python

Срезы списка

Если нам нужно получить доступ к части списка, мы можем использовать оператор среза :. Например,

my_list = ['p', 'r', 'o', 'g', 'r', 'a', 'm']
print("my_list =", my_list)

# получаем список с элементами от индекса 2 до индекса 4 (индекс 5 не включается)
print("my_list[2: 5] =", my_list[2: 5])

# получаем список с элементами от индекса 2 до индекса -3 (индекс -2 не включается)
print("my_list[2: -2] =", my_list[2: -2])

# получаем список с элементами от индекса 0 до индекса 2 (индекс 3 не включается)
print("my_list[0: 3] =", my_list[0: 3])

Вывод

my_list = ['p', 'r', 'o', 'g', 'r', 'a', 'm']
my_list[2: 5] = ['o', 'g', 'r']
my_list[2: -2] = ['o', 'g', 'r']
my_list[0: 3] = ['p', 'r', 'o']

Пропуск начального и конечного индексов при срезе

Если вы пропустите начальный индекс, срез начнётся с первого элемента. Аналогично, если вы пропустите последний индекс, срез закончится последним элементом. Например,

my_list = ['p', 'r', 'o', 'g', 'r', 'a', 'm']
print("my_list =", my_list)

# получаем список с элементами от индекса 5 до конца
print("my_list[5: ] =", my_list[5: ])

# получаем список от первого элемента до индекса -5
print("my_list[: -4] =", my_list[: -4])

# пропускаем и начальный, и конечный индексы
# получаем список от начала до конца
print("my_list[:] =", my_list[:])

Вывод

my_list = ['p', 'r', 'o', 'g', 'r', 'a', 'm']
my_list[5: ] = ['a', 'm']
my_list[: -4] = ['p', 'r', 'o']
my_list[:] = ['p', 'r', 'o', 'g', 'r', 'a', 'm']

Примечание

Если указанный индекс не существует в списке, Python выбрасывает исключение IndexError.


Добавление элементов в список

Как упоминалось ранее, списки изменяемы, и мы можем изменять их элементы. Чтобы добавить элемент в конец списка, мы можем использовать метод append(). Например,

fruits = ['apple', 'banana', 'orange']
print('Original List:', fruits)

fruits.append('cherry')

print('Updated List:', fruits)

Вывод

Original List: ['apple', 'banana', 'orange']
Updated List: ['apple', 'banana', 'orange', 'cherry']

Добавление элементов по указанному индексу

Мы можем вставить элемент по указанному индексу с помощью метода insert(). Например,

fruits = ['apple', 'banana', 'orange']
print("Original List:", fruits)

fruits.insert(2, 'cherry')

print("Updated List:", fruits)

Вывод

Original List: ['apple', 'banana', 'orange']
Updated List: ['apple', 'banana', 'cherry', 'orange']

Добавление элементов из других итерируемых объектов

Метод extend() добавляет все элементы указанного итерируемого объекта (список, кортеж, словарь или строка) в конец списка. Например,

numbers = [1, 3, 5]
print('Numbers:', numbers)

even_numbers  = [2, 4, 6]
print('Even numbers:', numbers)

# добавляем элементы одного списка в другой
numbers.extend(even_numbers)

print('Updated Numbers:', numbers)

Вывод

Numbers: [1, 3, 5]
Even numbers: [2, 4, 6]
Updated Numbers: [1, 3, 5, 2, 4, 6]

Изменение элементов списка

Мы можем изменить элементы списка, присвоив новые значения с помощью оператора =. Например,

colors = ['Red', 'Black', 'Green']
print('Original List:', colors)

# меняем первый элемент на 'Purple'
colors[0] = 'Purple'

# меняем третий элемент на 'Blue'
colors[2] = 'Blue'

print('Updated List:', colors)

Вывод

Original List: ['Red', 'Black', 'Green']
Updated List: ['Purple', 'Black', 'Blue']

Здесь мы заменили элемент по индексу 0 на 'Purple', а элемент по индексу 2 на 'Blue'.


Удаление элементов из списка

Мы можем удалить указанный элемент из списка с помощью метода remove(). Например,

numbers = [2,4,7,9]

# удаляем 4 из списка
numbers.remove(4)

print(numbers)

Вывод

[2, 7, 9]

Удаление одного или нескольких элементов списка

Вместо использования метода remove() мы можем удалить элемент из списка с помощью оператора del. Оператор del также можно использовать для удаления нескольких элементов или даже всего списка.

names = ['John', 'Eva', 'Laura', 'Nick', 'Jack']

# удаляем элемент по индексу 1
del names[1]
print(names)

# удаляем элементы с индекса 1 по индекс 2
del names[1: 3]
print(names)

# удаляем весь список
del names

# Ошибка! Список не существует.
print(names)

Вывод

['John', 'Laura', 'Nick', 'Jack']
['John', 'Jack']
Traceback (most recent call last):
  File "", line 15, in
NameError: name 'names' is not defined

Длина списка

Чтобы найти количество элементов (длину) списка, мы можем использовать встроенную функцию len(). Например,

cars = ['BMW', 'Mercedes', 'Tesla']

print('Total Elements:', len(cars))

Вывод

Total Elements: 3

Итерация по списку

Мы можем использовать цикл for для перебора элементов списка. Например,

fruits = ['apple', 'banana', 'orange']

# перебираем список
for fruit in fruits:
    print(fruit)

Вывод

apple
banana
orange

Методы списка в Python

В Python есть много полезных методов списков, которые упрощают работу со списками.

Метод

Описание

append()

Добавляет элемент в конец списка

extend()

Добавляет элементы списков и других итерируемых объектов в конец списка

insert()

Вставляет элемент по указанному индексу

remove()

Удаляет указанное значение из списка

pop()

Возвращает и удаляет элемент по заданному индексу

clear()

Удаляет все элементы из списка

index()

Возвращает индекс первого совпавшего элемента

count()

Возвращает количество указанного элемента в списке

sort()

Сортирует список по возрастанию/убыванию

reverse()

Изменяет порядок элементов на обратный

copy()

Возвращает поверхностную копию списка

Совет

Также читайте:

  • Python: list comprehension — краткий способ создать список из другой последовательности в одну строку.


Видео: списки и кортежи в Python