Что такое списки в 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 указывают на один и тот же объект в памяти, что демонстрирует эффективное использование памяти.
Создание списков
Способы создания списков:
- Квадратные скобки: Простейший способ — использование квадратных скобок [], внутри которых элементы перечисляются через запятую:
boys = ["Петя", "Ваня", "Коля"] print(boys)
- Функция list(): Преобразует итерируемые типы данных в списки. Работает только с итерируемыми типами. Примеры:
sp = list() # пустой список sp = list("Петя") # список символов из строки "Петя" sp = list(range(1, 101)) # список чисел от 1 до 100 sp = list(range(1, 101, 2)) # список нечетных чисел от 1 до 100
Преобразование неитерируемого типа (например, целого числа) приведёт к ошибке.
- Генераторы списков: Мощный инструмент для создания списков с использованием выражений и условий. Синтаксис:
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
- Метод 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. В следующих уроках будут рассмотрены дополнительные методы и функции.