Списки: зачем хранить много значений
До сих пор каждая переменная хранила одно значение. Но что если нужно хранить 100 имён пользователей? Создавать 100 переменных, безумие.
Аналогия: список, это нумерованный блокнот
Представь блокнот с пронумерованными страницами. На каждой странице можно написать что-то. Список в Python работает так же: это коллекция значений, где каждый элемент имеет свой номер (индекс).
Как создать список
# Пустой список
tasks = []
# Список с элементами
fruits = ["яблоко", "банан", "вишня"]
numbers = [1, 2, 3, 4, 5]
mixed = ["Алекс", 25, True] # можно смешивать типы
Доступ к элементам
Индексы начинаются с нуля, не с единицы. Это сбивает с толку поначалу, но быстро привыкаешь:
fruits = ["яблоко", "банан", "вишня", "груша"]
print(fruits[0]) # яблоко (первый)
print(fruits[1]) # банан (второй)
print(fruits[-1]) # груша (последний, отрицательные индексы с конца)
print(fruits[-2]) # вишня (предпоследний)
Основные операции
tasks = ["купить хлеб", "позвонить врачу"]
# Добавить в конец
tasks.append("сделать зарядку")
# Узнать длину
print(len(tasks)) # 3
# Проверить наличие
print("купить хлеб" in tasks) # True
# Удалить элемент
tasks.remove("позвонить врачу")
# Изменить элемент
tasks[0] = "купить молоко"
Перебор списка
users = ["Алекс", "Мария", "Дмитрий"]
for user in users:
print(f"Привет, {user}!")
Это и есть главная сила списков вместе с циклами, автоматически обработать каждый элемент.
Срезы: взять часть списка
numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(numbers[2:5]) # [2, 3, 4] (с индекса 2 до 5, не включая 5)
print(numbers[:3]) # [0, 1, 2] (первые 3)
print(numbers[7:]) # [7, 8, 9] (с 7 до конца)
print(numbers[::2]) # [0, 2, 4, 6, 8] (каждый второй)
List comprehension, создать список в одну строку
Вместо цикла для создания списка:
# Обычный способ
squares = []
for i in range(1, 6):
squares.append(i ** 2)
# List comprehension, короче и читаемее
squares = [i ** 2 for i in range(1, 6)]
print(squares) # [1, 4, 9, 16, 25]
💡 Главная мысль: Список, это коллекция значений под одним именем. Вместо десяти переменных
user1, user2, user3..., один списокusers. Работай с ним через цикл.