В данной статье мы подробно рассмотрим один из фундаментальных типов данных в языке программирования Python – списки (list). Несмотря на необычное название рубрики, материал посвящён именно работе со списками: их созданию, изменению, методам и практическому применению.
Что такое список в Python?
Список – это упорядоченная изменяемая коллекция объектов, которая может хранить элементы самых разных типов (числа, строки, другие списки, объекты и т.д.). Списки обозначаются квадратными скобками [], а элементы внутри них разделяются запятыми.
Основные свойства списков - Упорядоченность – элементы имеют определённый индекс, начиная с нуля.
- Изменяемость (mutability) – после создания список можно модифицировать: добавлять, удалять, менять элементы.
- Гетерогенность – в одном списке могут сосуществовать элементы разных типов.
- Вложенность – списки могут содержать другие списки, что позволяет создавать многомерные структуры.
Создание списков
Существует несколько способов создания списков в Python:
- Литерал – прямое указание элементов в квадратных скобках:
my_list = [1, 2, 3, 'apple', True] - Функция
list– преобразует итерируемый объект (строку, кортеж, диапазон и т.п.) в список:
my_list = list('python') # ['p', 'y', 't', 'h', 'o', 'n']
my_list2 = list(range(5)) # [0, 1, 2, 3, 4] - Списковые включения (list comprehensions) – компактный способ создания списков на основе существующих итерируемых объектов:
squares = [x**2 for x in range(10)] # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] Доступ к элементам
Элементы списка доступны по индексу. Отрицательные индексы отсчитываются с конца списка.
a = [10, 20, 30, 40, 50]
print(a[0]) # 10 (первый элемент)
print(a[-1]) # 50 (последний элемент)
print(a[2:4]) # [30, 40] (срез с индекса 2 включительно по 4 исключительно) Изменение списков
Поскольку списки изменяемы, существует множество методов для их модификации.
Добавление элементов
list.append(x)– добавляет элементxв конец списка.list.extend(iterable)– расширяет список элементами из итерируемого объекта.list.insert(i, x)– вставляет элементxна позициюi.
Удаление элементов
list.remove(x)– удаляет первое вхождение элементаx(вызываетValueError, если элемент не найден).list.pop([i])– удаляет и возвращает элемент по индексуi(по умолчанию последний).del list[i]– удаляет элемент по индексу (или срез).list.clear– удаляет все элементы, оставляя пустой список.
Другие полезные методы
list.index(x[, start[, stop]])– возвращает индекс первого вхожденияx;list.count(x)– подсчитывает количество occurrencesx.list.sort(key=None, reverse=False)– сортирует список на месте.list.reverse– обращает порядок элементов.list.copy– создает поверхностную копию списка.
Сортировка списков
Метод sort выполняет сортировку по возрастанию. Для сортировки по убыванию указывают параметр reverse=True. Также можно задать функцию key для сложных критериев сортировки.
numbers = [5, 2, 9, 1, 7]
numbers.sort # [1, 2, 5, 7, 9]
numbers.sort(reverse=True) # [9, 7, 5, 2, 1]
words = ['банан', 'яблоко', 'груша', 'киви']
words.sort(key=len) # ['киви', 'груша', 'яблоко', 'банан']
Сравнение списков
Списки можно сравнивать операторами ==, !=, <, <=, >, >=. Сравнение выполняется лексикографически: сначала сравниваются первые элементы, при равенстве – вторые и т.д.
[1, 2, 3] == [1, 2, 3] # True
[1, 2, 3] < [1, 2, 4] # True
[1, 2, 3] > [1, 2] # True (более длинный список считается большим при равных префиксах)
Списковые включения и генераторные выражения
Списковые включения позволяют создавать новые списки, применяя выражение к каждому элементу и optionally фильтруя их.
# Квадраты чётных чисел от 0 до 9 evens_squared = [x*x for x in range(10) if x % 2 == 0]Если нужно лишь последовательно обрабатывать элементы без создания промежуточного списка, удобно использовать генераторное выражение:
sum_of_squares = sum(x*x for x in range(1000))Пример практического использования
Представим, что нам нужно обработать данные о пропавших людях из некоего реестра (часть 61899). Каждая запись – это список из четырёх элементов:
[ID, имя, возраст, статус]. Ниже показано, как с помощью списков можно отфильтровать записи несовершеннолетних и отсортировать их по возрасту.# Исходные данные (упрощённый пример) records = [ [101, 'Анна Петрова', 17, 'пропала без вести'], [102, 'Иван Сидоров', 25, 'найден'], [103, 'Мария Кузнецова', 14, 'пропала без вести'], [104, 'Дмитрий Лебедев', 30, 'пропала без вести'], [105, 'Ольга Новикова', 12, 'пропала без вести'] ] minors_missing = [r for r in records if r[2] < 18 and r[3] == 'пропала без вести'] minors_missing.sort(key=lambda x: x[2]) print("Несовершеннолетние пропавшие без вести (отсортировано по возрасту):") for rec in minors_missing: print(f"ID: {rec[0]}, Имя: {rec[1]}, Возраст: {rec[2]}")Несовершеннолетние пропавшие без вести (отсортировано по возрасту): ID: 105, Имя: Ольга Новикова, Возраст: 12 ID: 103, Имя: Мария Кузнецова, Возраст: 14 ID: 101, Имя: Анна Петрова, Возраст: 17Списки в Python – мощный и гибкий инструмент для хранения и обработки наборов данных. Понимание их свойств, методов создания и модификации позволяет эффективно решать широкий спектр задач: от простого хранения чисел до сложной обработки структурированных записей, таких как списки пропавших людей. Освоив списки, вы получаете фундаментальную основу для дальнейшего изучения более продвинутых структур данных (кортежи, словари, множества) и работы с библиотеками, такими как
pandasилиnumpy.Надеемся, эта статья поможет вам лучше понять и применять списки в ваших проектах. Удачного кодирования!