Списки в Python: полное руководство по созданию, методам и практике применения

Забудь про скучные массивы! Раскрой силу списков в Python: мутируй, срезай и управляй данными как босс. Гайд от новичка до профи.

Бесплатная консультация юриста

+7 (800) 301-07-30

Реклама jurik.ru

В данной статье мы подробно рассмотрим один из фундаментальных типов данных в языке программирования Python – списки (list). Несмотря на необычное название рубрики, материал посвящён именно работе со списками: их созданию, изменению, методам и практическому применению.

Что такое список в Python?

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

Основные свойства списков

  • Упорядоченность – элементы имеют определённый индекс, начиная с нуля.
  • Изменяемость (mutability) – после создания список можно модифицировать: добавлять, удалять, менять элементы.
  • Гетерогенность – в одном списке могут сосуществовать элементы разных типов.
  • Вложенность – списки могут содержать другие списки, что позволяет создавать многомерные структуры.

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

Существует несколько способов создания списков в Python:

  1. Литерал – прямое указание элементов в квадратных скобках:
my_list = [1, 2, 3, 'apple', True]
  1. Функция list – преобразует итерируемый объект (строку, кортеж, диапазон и т.п.) в список:
my_list = list('python') # ['p', 'y', 't', 'h', 'o', 'n']
my_list2 = list(range(5)) # [0, 1, 2, 3, 4]
  1. Списковые включения (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) – подсчитывает количество occurrences x.
  • 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.

Надеемся, эта статья поможет вам лучше понять и применять списки в ваших проектах. Удачного кодирования!