Списки в Python: Подробное Руководство

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

Списки создаются с использованием квадратных скобок [], в которых через запятую перечисляются элементы:

my_list = [1, 2, 3, 4, 5]
print(my_list)  # [1, 2, 3, 4, 5]

Элементы списка могут быть разных типов, что делает списки Python особенно универсальными:

mixed_list = [1, "Hello", 3.14, True]
print(mixed_list)  # [1, "Hello", 3.14, True]

Также можно создать пустой список:

empty_list = []

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

К элементам списка можно обращаться с помощью индексов. Индексация в Python начинается с нуля:

my_list = [10, 20, 30, 40, 50]
print(my_list[0])  # 10
print(my_list[2])  # 30

Кроме того, Python поддерживает отрицательные индексы, которые начинают отсчет с конца списка:

print(my_list[-1])  # 50
print(my_list[-2])  # 40

Модификация списка

Списки в Python являются изменяемыми, то есть их можно модифицировать. Например, можно изменить элемент списка по индексу:

my_list[1] = 25
print(my_list)  # [10, 25, 30, 40, 50]

Можно добавлять новые элементы с помощью метода append():

my_list.append(60)
print(my_list)  # [10, 25, 30, 40, 50, 60]

Для вставки элемента в определенное место используется метод insert():

my_list.insert(2, 35)
print(my_list)  # [10, 25, 35, 30, 40, 50, 60]

Удалять элементы можно разными способами. Метод remove() удаляет первое вхождение элемента:

my_list.remove(30)
print(my_list)  # [10, 25, 35, 40, 50, 60]

Метод pop() удаляет элемент по индексу (или последний элемент, если индекс не указан):

my_list.pop()
print(my_list)  # [10, 25, 35, 40, 50]
my_list.pop(1)
print(my_list)  # [10, 35, 40, 50]

Срезы списков

Python поддерживает срезы для извлечения подсписков:

sub_list = my_list[1:3]
print(sub_list)  # [35, 40]

Можно использовать сокращенные записи для срезов:

  • my_list[:3] — все элементы до третьего (не включая);
  • my_list[2:] — все элементы, начиная с третьего и до конца;
  • my_list[::2] — каждый второй элемент.

Перебор списков

Списки легко перебирать с помощью циклов. Самый распространенный метод — это цикл for:

for item in my_list:
    print(item)

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

Списки обладают множеством встроенных методов для работы с ними:

sort() — сортирует список на месте:

my_list.sort()
print(my_list)  # [10, 35, 40, 50]

reverse() — переворачивает список:

my_list.reverse()
print(my_list)  # [50, 40, 35, 10]

len() — возвращает длину списка:

print(len(my_list))  # 4

Вложенные списки

Списки могут содержать другие списки, что позволяет создавать структуры данных, такие как матрицы:

matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(matrix[0])  # [1, 2, 3]
print(matrix[1][2])  # 6

Генераторы списков

Генераторы списков — это удобный способ создания списков в одну строку, используя цикл for и условие. Например, создадим список квадратов чисел:

squares = [x**2 for x in range(5)]
print(squares)  # [0, 1, 4, 9, 16]

Можно добавить условие:

even_squares = [x**2 for x in range(10) if x % 2 == 0]
print(even_squares)  # [0, 4, 16, 36, 64]

Копирование списков

При копировании списков нужно быть осторожным, так как простое присваивание создает ссылку на тот же объект, а не копию:

list1 = [1, 2, 3]
list2 = list1
list2[0] = 10
print(list1)  # [10, 2, 3] (меняется и list1)

Чтобы создать независимую копию, можно использовать срез или метод copy():

list2 = list1[:]
list2[0] = 100
print(list1)  # [10, 2, 3]

Списки — один из самых мощных и гибких инструментов в Python. Они позволяют хранить различные типы данных, модифицировать содержимое и выполнять на них множество операций. Понимание работы с ними важно для эффективного написания кода.