Программа курса:
Что такое список в Python?

Списки в Python — это один из самых универсальных и широко используемых типов данных. Они позволяют хранить и манипулировать коллекциями элементов, таких как числа, строки или даже другие списки. Если представить список как швейцарский нож программиста, то это инструмент, который всегда под рукой и готов помочь в любой ситуации. В этой лекции мы разберём основы работы со списками, их создание, индексацию и основные операции.
Что такое список в Python?
Список в Python — это упорядоченная коллекция элементов, которая может содержать объекты любого типа. Это как коробка, в которую можно положить что угодно: числа, строки, другие списки, да хоть кота (если он уместится в виде строки). Элементы списка могут быть как неизменяемыми (например, числа и строки), так и изменяемыми (например, другие списки).
Пример списка:
my_list = [1, 2, 3, 4, 5]
Здесь my_list
— это список, содержащий пять элементов. Списки создаются с помощью квадратных скобок []
, а элементы разделяются запятыми. Это как если бы вы писали список покупок, но вместо бумаги используете Python.
Индексация списков
Каждый элемент списка имеет свой индекс, который указывает его позицию в списке. Индексы начинаются с нуля. Это как очередь в магазине: первый человек в очереди имеет номер 0, второй — 1 и так далее. Не спрашивайте, почему так, просто запомните: программисты считают с нуля, это их фишка.
Пример:
my_list = ['яблоко', 'банан', 'вишня']
print(my_list[0]) # Вывод: яблоко
print(my_list[1]) # Вывод: банан
print(my_list[2]) # Вывод: вишня
Здесь мы обращаемся к элементам списка по их индексам. Если попытаетесь обратиться к индексу, которого нет (например, my_list[3]
), Python любезно выдаст ошибку IndexError
. Это как если бы вы попытались позвать человека, которого нет в очереди — неловко, правда?
Отрицательная индексация
В Python можно использовать отрицательные индексы для доступа к элементам списка с конца. Это как если бы вы решили считать очередь с конца: последний человек в очереди будет иметь индекс -1
, предпоследний — -2
и так далее.
Пример:
my_list = ['яблоко', 'банан', 'вишня']
print(my_list[-1]) # Вывод: вишня
print(my_list[-2]) # Вывод: банан
print(my_list[-3]) # Вывод: яблоко
Отрицательная индексация — это удобно, когда вам нужно быстро получить последний элемент списка, не зная его длины. Это как если бы вы знали, что последний человек в очереди всегда держит кофе — вам не нужно считать всех, чтобы понять, кто он.
Срезы (slices)
Срезы позволяют извлекать подсписки из основного списка. Это как если бы вы решили отрезать кусок от пиццы: вы указываете, с какого куска начать и где закончить, и получаете свою порцию. Для этого используется синтаксис start:stop:step
, где start
— это начальный индекс, stop
— конечный индекс (не включительно). А step
это шаг (инкремент) между элементами в срезе. Если не указан, по умолчанию равен 1
(каждый элемент). Может быть отрицательным.
Пример:
my_list = ['яблоко', 'банан', 'вишня', 'апельсин', 'киви']
print(my_list[1:4]) # Вывод: ['банан', 'вишня', 'апельсин']
Здесь my_list[1:4]
создает новый список, содержащий элементы с индексами 1, 2 и 3 из исходного списка. Обратите внимание, что элемент с индексом 4 не включается — это как если бы вы сказали: "Дай мне кусок пиццы с первого по третий, но четвертый оставь".
Пропуск элементов
Вы можете пропустить начальный или конечный индекс в срезе, чтобы указать, что срез должен начинаться с начала списка или заканчиваться в конце. Это как если бы вы сказали: "Дай мне всё, начиная с третьего куска" или "Дай мне всё до пятого куска".
Пример:
my_list = ['яблоко', 'банан', 'вишня', 'апельсин', 'киви']
print(my_list[:3]) # Вывод: ['яблоко', 'банан', 'вишня']
print(my_list[2:]) # Вывод: ['вишня', 'апельсин', 'киви']
Здесь my_list[:3]
создает новый список, содержащий элементы с начала до индекса 2 включительно, а my_list[2:]
создает список, начиная с индекса 2 до конца. Это как если бы вы сказали: "Дай мне всё до третьего куска" или "Дай мне всё, начиная с третьего".
Пустой список
Пустой список создается с помощью пустых квадратных скобок []
. Это как коробка, в которой пока ничего нет. Пустой список не содержит элементов и имеет длину 0.
Пример:
empty_list = []
print(empty_list) # Вывод: []
print(len(empty_list)) # Вывод: 0
Пустой список может быть полезен, когда вы хотите начать собирать данные, но пока не знаете, что именно будете хранить. Это как если бы вы купили коробку для будущих сокровищ, но пока не решили, что в неё положить.
Списки и типы данных
Списки могут содержать элементы разных типов. Это как если бы вы решили положить в одну коробку яблоки, бананы, книги и носки. Python не будет против, но, возможно, вам стоит задуматься о порядке в вашей коробке.
Пример:
mixed_list = [1, 'яблоко', 3.14, [1, 2, 3]]
print(mixed_list) # Вывод: [1, 'яблоко', 3.14, [1, 2, 3]]
Здесь mixed_list
содержит число, строку, число с плавающей точкой и ещё один список. Это как если бы вы решили собрать в одной коробке всё, что попалось под руку.
Изменяемость списков
Списки в Python являются изменяемыми объектами. Это означает, что вы можете изменять их содержимое после создания. Вы можете добавлять, удалять или изменять элементы списка. Это как если бы вы могли менять содержимое коробки, не создавая новую.
Пример:
my_list = [1, 2, 3]
my_list[1] = 10
print(my_list) # Вывод: [1, 10, 3]
my_list.append(4)
print(my_list) # Вывод: [1, 10, 3, 4]
del my_list[0]
print(my_list) # Вывод: [10, 3, 4]
Здесь мы сначала изменили второй элемент списка, затем добавили новый элемент в конец, а потом удалили первый элемент. Это как если бы вы решили поменять яблоко на банан, добавить апельсин и выкинуть яблоко.
Создание списков с помощью генераторов
(Эта тема будет разобрана более подробно в следующих главах)
Списки могут быть созданы не только вручную, но и с помощью генераторов, которые позволяют создавать списки на основе существующих данных. Это как если бы вы могли заказать пиццу, просто сказав: "Сделай мне пиццу с такими-то ингредиентами", и она появится сама собой.
Пример:
squares = [x**2 for x in range(5)]
print(squares) # Вывод: [0, 1, 4, 9, 16]
Здесь создается список квадратов чисел от 0 до 4. Это как если бы вы сказали: "Дай мне квадраты всех чисел от 0 до 4", и Python сделал это за вас.
Запись списка через input()

Записать список через input()
в Python можно разными способами, в зависимости от того, как вы хотите представить данные и какие элементы вы собираетесь вводить. Вот несколько подходов:
Ввод списка чисел
Если нужно ввести список чисел, разделённых пробелами, можно использовать следующий подход:
# Ввод списка чисел через пробел
input_str = input("Введите числа через пробел: ")
# Преобразование строки в список чисел
numbers = list(map(int, input_str.split()))
print(numbers)
Ввод списка строк
Если нужно ввести список строк, разделённых пробелами:
# Ввод списка строк через пробел
input_str = input("Введите строки через пробел: ")
# Преобразование строки в список строк
strings = input_str.split()
print(strings)
Создание списка из введенных чисел через запятую
# Ввод списка чисел через запятую
input_str = input("Введите числа через запятую: ")
# Преобразование строки в список чисел
numbers = list(map(int, input_str.split(',')))
print(numbers)
Списки — это мощный инструмент для работы с коллекциями данных в Python. Они позволяют эффективно управлять множеством элементов, извлекать подсписки и манипулировать данными. Основы работы со списками включают создание, индексацию, срезы и изменение содержимого списка. Освоив эти основы, вы сможете более уверенно использовать списки для решения различных задач в программировании на Python.