Списки в Python
Список (тип list) — это упорядоченная изменяемая коллекция элементов. В этой статье разберём, как создавать списки, обращаться к их элементам, изменять и какие методы у них есть.
Что такое список?
Список в Python — это упорядоченная, изменяемая коллекция элементов, которые могут быть разных типов. Вы можете представить список как контейнер, в котором хранятся различные объекты, расположенные в определенном порядке.
Основные свойства списков:
- Упорядоченность: элементы хранятся в том порядке, в котором они были добавлены
- Изменяемость: можно добавлять, удалять и изменять элементы после создания списка
- Индексируемость: к каждому элементу можно обратиться по его позиции (индексу)
- Допускают дубликаты: один и тот же элемент может встречаться в списке несколько раз
Создание списков
Существует несколько способов создания списков в Python:
С помощью квадратных скобок []
Python 3.13# Пустой список >>> empty_list = [] >>> print(empty_list)[]# Список чисел >>> numbers = [1, 2, 3, 4, 5] >>> print(numbers)[1, 2, 3, 4, 5]# Список разных типов данных >>> mixed = [1, "привет", True, 3.14] >>> print(mixed)[1, 'привет', True, 3.14]# Вложенные списки (список списков) >>> matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] >>> print(matrix)[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
С помощью конструктора list()
Python 3.13# Создание пустого списка >>> empty_list = list() >>> print(empty_list)[]# Создание списка из строки (каждый символ становится элементом) >>> chars = list("Python") >>> print(chars)['P', 'y', 't', 'h', 'o', 'n']# Создание списка из других итерируемых объектов >>> tuple_to_list = list((1, 2, 3)) >>> print(tuple_to_list)[1, 2, 3]>>> set_to_list = list({1, 2, 3}) >>> print(set_to_list)[1, 2, 3]
Доступ к элементам списка
Индексация
В Python индексация начинается с 0, то есть первый элемент имеет индекс 0, второй — 1, и так далее:
Python 3.13>>> fruits = ["яблоко", "банан", "вишня", "груша", "апельсин"] # Получение элементов по индексу >>> first_fruit = fruits[0] >>> print(f"Первый фрукт: {first_fruit}")Первый фрукт: яблоко# Отрицательные индексы для доступа с конца списка >>> last_fruit = fruits[-1] >>> print(f"Последний фрукт: {last_fruit}")Последний фрукт: апельсин>>> second_last = fruits[-2] >>> print(f"Предпоследний фрукт: {second_last}")Предпоследний фрукт: груша
Срезы (slices)
Срезы позволяют получить подсписок, указав начальный и конечный индексы:
Python 3.13>>> fruits = ["яблоко", "банан", "вишня", "груша", "апельсин"] # Синтаксис среза: список[начало:конец:шаг] # Начало включается, конец не включается! # Первые три элемента >>> first_three = fruits[0:3] >>> print(f"Первые три фрукта: {first_three}")Первые три фрукта: ['яблоко', 'банан', 'вишня']# То же самое, но начальный индекс можно опустить, если он 0 >>> first_three = fruits[:3] >>> print(f"Первые три фрукта: {first_three}")Первые три фрукта: ['яблоко', 'банан', 'вишня']# Каждый второй элемент >>> every_second = fruits[::2] >>> print(f"Каждый второй фрукт: {every_second}")Каждый второй фрукт: ['яблоко', 'вишня', 'апельсин']# Разворот списка >>> reversed_list = fruits[::-1] >>> print(f"Список в обратном порядке: {reversed_list}")Список в обратном порядке: ['апельсин', 'груша', 'вишня', 'банан', 'яблоко']
Изменение элементов списка
Главное отличие списков от строк: списки изменяемые (mutable). Строку поменять «на месте» нельзя — приходится создавать новую (вспомните урок про строки). А вот элементы списка можно изменять, добавлять и удалять прямо в существующем объекте:
Python 3.13>>> fruits = ["яблоко", "банан", "вишня"] # Изменение элемента >>> fruits[0] = "киви" >>> print(fruits)['киви', 'банан', 'вишня']# Изменение нескольких элементов с помощью среза >>> numbers = [1, 2, 3, 4, 5] >>> numbers[1:4] = [20, 30, 40] >>> print(numbers)[1, 20, 30, 40, 5]# Можно даже заменить несколько элементов на другое количество >>> numbers = [1, 2, 3, 4, 5] >>> numbers[1:4] = [20, 30] >>> print(numbers)[1, 20, 30, 5]
Основные методы списков
Python предоставляет множество встроенных методов для работы со списками:
Добавление элементов
Python 3.13>>> fruits = ["яблоко", "банан"] # Добавление элемента в конец списка >>> fruits.append("вишня") >>> print(fruits)['яблоко', 'банан', 'вишня']# Вставка элемента на определенную позицию >>> fruits.insert(1, "апельсин") >>> print(fruits)['яблоко', 'апельсин', 'банан', 'вишня']# Добавление элементов из другого списка >>> more_fruits = ["груша", "виноград"] >>> fruits.extend(more_fruits) >>> print(fruits)['яблоко', 'апельсин', 'банан', 'вишня', 'груша', 'виноград']# Объединение списков с помощью оператора + >>> combined = fruits + ["ананас", "манго"] >>> print(combined)['яблоко', 'апельсин', 'банан', 'вишня', 'груша', 'виноград', 'ананас', 'манго']
Удаление элементов
Python 3.13>>> fruits = ["яблоко", "банан", "вишня", "апельсин", "банан"] # Удаление элемента по значению (удаляет только первое вхождение) >>> fruits.remove("банан") >>> print(fruits)['яблоко', 'вишня', 'апельсин', 'банан']# Удаление элемента по индексу и возврат его значения >>> removed = fruits.pop(1) >>> print(f"Удален: {removed}")Удален: вишня>>> print(f"Список после удаления: {fruits}")Список после удаления: ['яблоко', 'апельсин', 'банан']# Если индекс не указан, pop() удаляет и возвращает последний элемент >>> last = fruits.pop() >>> print(f"Последний элемент: {last}")Последний элемент: банан>>> print(fruits)['яблоко', 'апельсин']# Удаление всех элементов из списка >>> fruits.clear() >>> print(f"Пустой список: {fruits}")Пустой список: []# Оператор del для удаления элементов по индексу или срезу >>> numbers = [1, 2, 3, 4, 5] >>> del numbers[0] >>> print(numbers)[2, 3, 4, 5]>>> del numbers[1:3] >>> print(numbers)[2, 5]
Поиск и подсчет элементов
Python 3.13>>> fruits = ["яблоко", "банан", "вишня", "банан", "груша"] # Проверка наличия элемента в списке >>> print("банан" in fruits)True>>> print("арбуз" in fruits)False# Поиск индекса первого вхождения элемента >>> banana_index = fruits.index("банан") >>> print(f"Индекс первого банана: {banana_index}")Индекс первого банана: 1# Подсчет количества вхождений элемента >>> banana_count = fruits.count("банан") >>> print(f"Количество бананов: {banana_count}")Количество бананов: 2
Сортировка и разворот
Python 3.13# Сортировка списка (изменяет исходный список) >>> numbers = [3, 1, 4, 1, 5, 9, 2] >>> numbers.sort() >>> print(f"Отсортированный список: {numbers}")Отсортированный список: [1, 1, 2, 3, 4, 5, 9]# Сортировка в обратном порядке >>> numbers.sort(reverse=True) >>> print(f"Обратная сортировка: {numbers}")Обратная сортировка: [9, 5, 4, 3, 2, 1, 1]# Если не хотите изменять исходный список, используйте sorted() >>> original = [3, 1, 4, 1, 5] >>> sorted_list = sorted(original) >>> print(f"Оригинал: {original}")Оригинал: [3, 1, 4, 1, 5]>>> print(f"Отсортированная копия: {sorted_list}")Отсортированная копия: [1, 1, 3, 4, 5]
Копирование списков
Это одна из самых частых причин багов у новичков: присваивание списка не создаёт копию, обе переменные указывают на один и тот же объект в памяти. Если изменить список через одну переменную, изменение увидит и другая.

Python 3.13# Создаем список >>> original = [1, 2, 3] # Присваивание не создает копию — обе переменные указывают на один список >>> reference = original >>> reference.append(4) >>> print(f"Оригинал после изменения ссылки: {original}")Оригинал после изменения ссылки: [1, 2, 3, 4]# Правильные способы копирования списка: # 1. Метод copy() >>> copy1 = original.copy() # 2. Использование среза [:] >>> copy2 = original[:] # 3. Функция list() >>> copy3 = list(original) # Проверим, что копии не связаны с оригиналом >>> copy1.append(5) >>> print(f"Оригинал: {original}")Оригинал: [1, 2, 3, 4]>>> print(f"Копия 1: {copy1}")Копия 1: [1, 2, 3, 4, 5]
Практический пример использования списка
Python 3.13# Список студентов и их оценок >>> students = ["Анна", "Иван", "Мария", "Петр", "Елена"] >>> grades = [95, 82, 90, 78, 88] # Нахождение студента с наивысшим баллом >>> highest_score = max(grades) >>> top_student_index = grades.index(highest_score) >>> print(f"Лучший студент: {students[top_student_index]} с оценкой {highest_score}")Лучший студент: Анна с оценкой 95
Проверка понимания
Какой из следующих способов правильно создаст копию списка, не связанную с оригиналом?
