Работа со списками в Python — это основополагающий навык, который понадобится тебе на протяжении всего изучения языка. Списки в Python — это изменяемые последовательности элементов, которые могут содержать элементы любого типа. Давай рассмотрим основные операции со списками.
Что такое списки?
Списки в Python — это упорядоченные коллекции элементов, которые могут быть разных типов (числа, строки, другие списки и т.д.). Они заключены в квадратные скобки [ ] и элементы разделяются запятыми.
Создание списка
Список можно создать с помощью квадратных скобок или функции list():
# Пустой список
my_list = []
# Списки с элементами
my_list = [1, 2, 3, 'a', 'b', 'c']
numbers = [1, 2, 3, 4, 5]
strings = ["apple", "banana", "cherry"]
mixed = [1, "hello", 3.14, True]
# Список из строки
my_list = list('hello') # ['h', 'e', 'l', 'l', 'o']
Доступ к элементам списка
Элементы списка нумеруются с нуля. Элементы списка можно извлекать по их индексам.
fruits = ["apple", "banana", "cherry"]
# Получение первого элемента
print(fruits[0]) # "apple"
# Получение последнего элемента
print(fruits[-1]) # "cherry"
my_list = [10, 20, 30, 40, 50]
# Первый элемент
first_element = my_list[0] # 10
# Последний элемент
last_element = my_list[-1] # 50
# Срез списка (с 1-го по 3-й элемент, не включая 3-й)
sub_list = my_list[1:3] # [20, 30]
Изменение элементов списка
fruits = ["apple", "banana", "cherry"]
# Изменение второго элемента
fruits[1] = "blueberry"
print(fruits) # ["apple", "blueberry", "cherry"]
my_list = [1, 2, 3, 4, 5]
# Изменение элемента по индексу
my_list[1] = 20 # [1, 20, 3, 4, 5]
# Изменение среза
my_list[1:3] = [200, 300] # [1, 200, 300, 4, 5]
Добавление элементов в список
fruits = ["apple", "banana", "cherry"]
# Добавление элемента в конец списка
fruits.append("orange")
print(fruits) # ["apple", "banana", "cherry", "orange"]
# Вставка элемента в определенную позицию
fruits.insert(1, "blueberry")
print(fruits) # ["apple", "blueberry", "banana", "cherry", "orange"]
my_list = [1, 2, 3]
# Добавление одного элемента в конец списка
my_list.append(4) # [1, 2, 3, 4]
# Добавление нескольких элементов в конец списка
my_list.extend([5, 6]) # [1, 2, 3, 4, 5, 6]
# Вставка элемента в конкретное место
my_list.insert(1, 1.5) # [1, 1.5, 2, 3, 4, 5, 6]
Удаление элементов из списка
fruits = ["apple", "banana", "cherry", "orange"]
# Удаление элемента по значению
fruits.remove("banana")
print(fruits) # ["apple", "cherry", "orange"]
# Удаление элемента по индексу
del fruits[1]
print(fruits) # ["apple", "orange"]
# Удаление и получение последнего элемента
last_fruit = fruits.pop()
print(last_fruit) # "orange"
print(fruits) # ["apple"]
my_list = [1, 2, 3, 4, 5]
# Удаление элемента по значению
my_list.remove(3) # [1, 2, 4, 5]
# Удаление элемента по индексу
del my_list[1] # [1, 4, 5]
# Удаление и возвращение элемента по индексу
popped_element = my_list.pop(1) # my_list: [1, 5], popped_element: 4
# Очистка списка
my_list.clear() # []
Срезы списка
Срезы позволяют получить часть списка.
numbers = [1, 2, 3, 4, 5]
# Получение первых трех элементов
print(numbers[:3]) # [1, 2, 3]
# Получение элементов с третьего до конца
print(numbers[2:]) # [3, 4, 5]
# Получение элементов с третьего по четвертый
print(numbers[2:4]) # [3, 4]
Поиск элементов в списке
fruits = ["apple", "banana", "cherry"]
# Проверка наличия элемента в списке
print("banana" in fruits) # True
print("orange" in fruits) # False
# Получение индекса элемента
print(fruits.index("cherry")) # 2
Перебор элементов списка
fruits = ["apple", "banana", "cherry"]
# Перебор элементов с помощью цикла for
for fruit in fruits:
print(fruit)
my_list = ['a', 'b', 'c', 'd']
# Перебор элементов с помощью цикла for
for element in my_list:
print(element)
# Перебор элементов с индексами
for index, element in enumerate(my_list):
print(f"Index: {index}, Element: {element}")
Основные методы списка
- append(x) — добавляет элемент `x` в конец списка.
- insert(i, x) — вставляет элемент `x` на позицию `i`.
- remove(x) — удаляет первый найденный элемент `x`.
- pop([i]) — удаляет элемент на позиции `i` и возвращает его (если `i` не указан, удаляет и возвращает последний элемент).
- index(x) — возвращает индекс первого найденного элемента `x`.
- count(x) — возвращает количество элементов `x` в списке.
- sort() — сортирует список.
- reverse() — разворачивает список.
- len() — возвращает длину списка
- in — проверяет, есть ли элемент в списке
Другие полезные методы
my_list = [1, 2, 3, 4, 5]
# Поиск индекса элемента
index_of_three = my_list.index(3) # 2
# Подсчет количества вхождений элемента
count_of_twos = my_list.count(2) # 1
# Обратный порядок элементов
my_list.reverse() # [5, 4, 3, 2, 1]
# Сортировка списка
my_list.sort() # [1, 2, 3, 4, 5]
Генераторы списков
Генераторы списков позволяют создавать новые списки на основе существующих с использованием компактного синтаксиса:
# Создание списка квадратов чисел от 0 до 9
squares = [x**2 for x in range(10)] # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
# Список четных чисел от 0 до 9
evens = [x for x in range(10) if x % 2 == 0] # [0, 2, 4, 6, 8]
Это основные операции со списками в Python. Практикуйтесь с этими примерами, чтобы лучше понять, как работают списки!