Привет! До сих пор мы работали с одиночными значениями: числами, строками. Но в реальном мире данные редко бывают одиночными. Часто нам нужно хранить много значений: список имён, список чисел, список товаров.
Именно для этого в Python есть списки (list).
В этой статье мы разберём:
- Что такое список
- Как создавать списки
- Как обращаться к элементам по индексам
- Как использовать срезы
- Изменяемость списков
- Что нужно знать перед началом
- Основная часть
- Что такое список
- Создание списков
- Индексы списка
- Изменение элементов
- Отрицательные индексы
- Длина списка (len)
- Срезы (slicing)
- Вложенные списки
- Задачи для закрепления
- Нюансы и подводные камни
- Ошибка при выходе за границы
- Срезы не меняют исходный список
- Пустой срез
- Частые ошибки и как их избежать
- Ошибка 1: Индекс вне границ
- Ошибка 2: Путаница между списком и строкой
- Ошибка 3: Неправильный срез
- Шпаргалка
- Заключение / Выводы
- КВИЗ
- Что дальше?
Что нужно знать перед началом
Для этого урока тебе понадобится:
- Установленный Python
- Базовое понимание переменных
Совет: Списки — это один из самых важных типов данных. Почти в каждой программе используются списки.
Основная часть
Что такое список
Список — это упорядоченная коллекция элементов, которые могут быть разных типов.
my_list = [1, 2, 3, 4, 5]
mixed_list = [1, "hello", 3.14, True]
empty_list = []Важно: Списки в Python изменяемы (mutable). Их можно менять после создания.
Создание списков
# Пустой список
empty = []
# Список чисел
numbers = [10, 20, 30, 40, 50]
# Список строк
fruits = ["яблоко", "банан", "вишня"]
# Список из разных типов
mixed = [1, "hello", 3.14, True]
# Список из списков (вложенный)
matrix = [[1, 2], [3, 4], [5, 6]]Индексы списка
К каждому элементу списка можно обратиться по его номеру — индексу.
Важно: Индексация начинается с 0!
fruits = ["яблоко", "банан", "вишня", "дыня"]
print(fruits[0]) # яблоко
print(fruits[1]) # банан
print(fruits[2]) # вишня
print(fruits[3]) # дыняИзменение элементов
Так как списки изменяемы, можно менять их элементы.
fruits = ["яблоко", "банан", "вишня"]
fruits[1] = "апельсин"
print(fruits) # ["яблоко", "апельсин", "вишня"]Отрицательные индексы
Отрицательные индексы отсчитываются с конца списка.
fruits = ["яблоко", "банан", "вишня", "дыня"]
print(fruits[-1]) # дыня (последний)
print(fruits[-2]) # вишня
print(fruits[-3]) # банан
print(fruits[-4]) # яблокоДлина списка (len)
fruits = ["яблоко", "банан", "вишня"]
print(len(fruits)) # 3Срезы (slicing)
Срезы позволяют получить часть списка.
fruits = ["яблоко", "банан", "вишня", "дыня", "ежевика"]
print(fruits[1:4]) # ["банан", "вишня", "дыня"] (с 1 по 3)
print(fruits[:3]) # ["яблоко", "банан", "вишня"] (с начала до 2)
print(fruits[2:]) # ["вишня", "дыня", "ежевика"] (с 2 до конца)
print(fruits[-3:]) # ["вишня", "дыня", "ежевика"] (с -3 до конца)
print(fruits[::2]) # ["яблоко", "вишня", "ежевика"] (каждый второй)
print(fruits[::-1]) # ["ежевика", "дыня", "вишня", "банан", "яблоко"] (все)Совет: Срезы создают новый список, не изменяя исходный.
Вложенные списки
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
print(matrix[0]) # [1, 2, 3]
print(matrix[0][1]) # 2
print(matrix[2][2]) # 9Задачи для закрепления
Задача 1. Создай список из пяти любимых книг.
Задача 2. Выведи первый и последний элемент списка.
Задача 3. Измени второй элемент списка.
Задача 4. Выведи второй и четвёртый элементы списка (через срезы).
Задача 5. Выведи список в обратном порядке (через срезы).
Ответы:
Задача 1.
# Задача 1
books = ["Война и мир", "Мастер и Маргарита", "Преступление и наказание", "Гарри Поттер", "Властелин колец"]Задача 2.
print(books[0]) # Первый
print(books[-1]) # ПоследнийЗадача 3.
books[1] = "Идиот"
print(books)Задача 4.
print(books[1:4:2]) # [второй, четвёртый]Задача 5.
print(books[::-1]) # Обратный порядокНюансы и подводные камни
Ошибка при выходе за границы
fruits = ["яблоко", "банан"]
# print(fruits[5]) # IndexError: list index out of rangeСрезы не меняют исходный список
fruits = ["яблоко", "банан", "вишня"]
sub_list = fruits[1:3]
print(sub_list) # ["банан", "вишня"]
print(fruits) # ["яблоко", "банан", "вишня"]Пустой срез
fruits = ["яблоко", "банан", "вишня"]
print(fruits[3:5]) # [] (пустой список)Частые ошибки и как их избежать
Ошибка 1: Индекс вне границ
Используй len() для проверки длины списка.
Ошибка 2: Путаница между списком и строкой
Строки неизменяемы, списки — изменяемы.
Ошибка 3: Неправильный срез
Срез [start:stop] включает start, но не включает stop.
print(fruits[1:3]) # 1 и 2 элементыШпаргалка
| Что нужно | Как пишется |
|---|---|
| Создать список | my_list = [1, 2, 3] |
| Пустой список | empty = [] |
| Доступ по индексу | my_list[0] |
| Последний элемент | my_list[-1] |
| Длина списка | len(my_list) |
| Срез | my_list[1:3] |
| Срез с шагом | my_list[::2] |
| Обратный порядок | my_list[::-1] |
Заключение / Выводы
Сегодня мы узнали:
- Что такое списки и зачем они нужны
- Как обращаться к элементам по индексам
- Как использовать срезы
- Отрицательные индексы








