Python для начинающих: Списки — полное руководство

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

Списки в Python — упорядоченные наборы элементов. Элементами могут быть объекты различных типов: числа (целые и вещественные), строки, другие списки, кортежи и т. д. Главное отличие от массивов других языков — возможность хранения объектов разных типов в одном списке. Списки изменяемы: можно добавлять, удалять и перезаписывать элементы. Список может быть пустым или содержать любое количество элементов, при этом значения могут повторяться. Тип данных — list.

Как списки хранятся в памяти?

При создании списка в памяти резервируется место для указателей на элементы. Список не хранит сами элементы, а только указатели на них. Таким образом, список — массив указателей.

Пример:

x = 5
boys = [x]  # Список с одним элементом — числом 5
print(id(x), id(boys[0]), id(5)) # вывод id(x), id(boys[0]) и id(5) — одинаковые значения

x, boys[0] и 5 указывают на один и тот же объект в памяти, что демонстрирует эффективное использование памяти.

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

Способы создания списков:

  1. Квадратные скобки: Простейший способ — использование квадратных скобок [], внутри которых элементы перечисляются через запятую:

    boys = ["Петя", "Ваня", "Коля"]
    print(boys)
  2. Функция list(): Преобразует итерируемые типы данных в списки. Работает только с итерируемыми типами. Примеры:

    sp = list() # пустой список
    sp = list("Петя") # список символов из строки "Петя"
    sp = list(range(1, 101)) # список чисел от 1 до 100
    sp = list(range(1, 101, 2)) # список нечетных чисел от 1 до 100

    Преобразование неитерируемого типа (например, целого числа) приведёт к ошибке.

  3. Генераторы списков: Мощный инструмент для создания списков с использованием выражений и условий. Синтаксис:

    sp = [выражение for переменная in последовательность if условие]

    Примеры:

    sp = [i for i in range(1, 101) if i % 2 == 0 and i % 3 == 0] # числа от 1 до 100, кратные 2 и 3
    sp = [i**2 for i in range(1, 101) if i % 2 == 0 and i % 3 == 0] # квадраты чисел от 1 до 100, кратные 2 и 3
    sp = [i**2 if i % 2 == 0 else i**3 for i in range(1, 101)] # квадраты четных чисел и кубы нечетных от 1 до 100
  4. Метод split(): Метод строки split() возвращает список подстрок, разделенных указанным разделителем:

    my_string = "Моя любимая май дир"
    sp1 = my_string.split()
    print(sp1)

Работа со списками

Списки, как и строки, — последовательности. Можно обращаться к элементам или группам элементов с помощью индексов и срезов.

  • Доступ по индексу: Индексация начинается с 0 слева направо и с -1 справа налево.
  • Срезы: Срезы позволяют извлекать подсписки: [начало:конец:шаг]. конец не включается.

Важно: При присваивании (новый_список = существующий_список) создается не копия, а новая ссылка на тот же объект в памяти. Изменение элементов в одном списке отразится на другом. Для создания копии используйте срез: новый_список = существующий_список[:].

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

Списки могут содержать другие списки. Доступ к элементам вложенных списков осуществляется указанием индексов на каждом уровне:

nested_list = [[1, 2, 3], [4, 5, 6]]
print(nested_list[-1][1]) #вывод элемента 5

Склеивание и повторение списков

Склеивание списков оператором +:

boys = ["Петя", "Ваня"]
girls = ["Оля", "Соня"]
students = boys + girls
print(students)

Повторение элементов умножением на число:

repeated_list = girls * 2
print(repeated_list)

Добавление элементов разных типов с помощью extend:

students.extend([3])
print(students)

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

Что будем искать? Например,программа