undo
search menu close

Методы списков

📅 4 мая 2025 г. 0:16

Списки в Python обладают множеством встроенных методов, которые значительно упрощают работу с упорядоченными коллекциями данных. Рассмотрим основные методы для добавления, удаления и изменения порядка элементов в списках.

Добавление элемента в конец списка

Для добавления элемента item в конец списка используется метод list.append().

Метод list.append(item)
Описание Добавляет в конец списка list объект item
Параметры item – объект, который нужно добавить в конец списка
Возвращаемое значение None

Например, добавим в конец списка с одеждой новый элемент:

clothes = ["Туника", "Тога"]
clothes.append("Мантия")
print(clothes) 
# Вывод: ['Туника', 'Тога', 'Мантия']

При этом если использовать данный метод для добавления другого списка, то он будет добавлен целиком как отдельный элемент:

clothes = ["Туника", "Тога", "Мантия"]
hats = ["Повязка", "Капюшон"]
clothes.append(hats)
print(clothes) 
# Вывод: ['Туника', 'Тога', 'Мантия', ['Повязка', 'Капюшон']]

Так список hats становится вложенным списком внутри clothes.

Добавление элемента в список по индексу

Добавить элемент не в конец списка, а по определённому индексу, позволяет метод list.insert().

Метод list.insert(item, index)
Описание Вставляет элемент item в список list по индексу index
Параметры item – элемент, который нужно добавить в список
index – индекс, по которому вставляет элемент
Возвращаемое значение None

Элемент, находившийся ранее по этому индексу, и все последующие элементы сдвигаются на одну позицию вправо:

meals = ["Завтрак", "Ужин"]
meals.insert("Обед", 1)
print(meals) 
# Вывод: ["Завтрак", "Обед", "Ужин"]

Расширение списка другой коллекцией

Объединить два списка в один можно с помощью операции конкатенации (сложения):

shoes = ["Сандалии", "Ботинки", "Сапоги"]
extra_shoes = ["Балетки", "Ботильоны"]
shoes += extra_shoes
print(shoes)
# Вывод: ['Сандалии', 'Ботинки', 'Сапоги', 'Балетки', 'Ботильоны']

Но также существует специальный метод list.extend(), позволяющий расширить список элементами другой коллекцией.

Метод list.extend(iterable)
Описание Расширяет список list всеми объектами коллекции iterable
Параметры iterable – коллекция, элементы которой нужно добавить в конец списка
Возвращаемое значение None

Данный метод добавляет в конец списка все элементы итерируемого объекта iterable, то есть списка, кортежа и так далее:

accessories = ["Часы", "Шарф"]
jewelry = ("Браслет", "Серьги", "Кольцо")
accessories.extend(jewelry)
print(accessories) 
# Вывод: ['Часы', 'Шарф', 'Браслет', 'Серьги', 'Кольцо']

Если в метод list.extend() передать строку, то она будет посимвольно добавлена в конец списка:

accessories = ["Часы", "Шарф", "Браслет", "Серьги", "Кольцо"]
belt = "Кушак"
accessories.extend(belt)
print(clothes) 
# Вывод: ['Часы', 'Шарф', 'Браслет', 'Серьги', 'Кольцо', 'К', 'у', 'ш', 'а', 'к']

Удаление элементов списка

Элемент из списка можно удалить как по значению, так и по индексу, а также можно полностью очистить список, удалив все его элементы.

Удаление элемента по значению

Для удаления из списка элемента по значению используется метод list.remove().

Метод list.remove(item)
Описание Удаляет из списка list первый найденный элемент item
Параметры item – объект, который нужно удалить
Возвращаемое значение None

Если в списке несколько элементов с удаляемым значением, то метод удаляет первый элемент (то есть с наименьшим индексом), в то время как остальные элементы с этим значением останутся в списке без изменений:

gadgets = ["Компьютер", "Телефон", "Планшет", "Компьютер", "Компьютер"]
gadgets.remove("Компьютер")
print(gadgets)
# Вывод: ['Телефон', 'Планшет', 'Компьютер', 'Компьютер']

Но если элемент не найден, то будет вызвано исключение ValueError:

gadgets = ["Компьютер", "Телефон", "Планшет", "Компьютер", "Компьютер"]
gadgets.remove("Магнитофон")
print(gadgets)
# Ошибка: ValueError: list.remove(x): x not in list

Удаление элемента по индексу

В случае, когда нужно удалить элемент по индексу, используется метод list.pop(i).

Метод list.pop(index=-1)
Описание Удаляет и возвращает из списка list элемент по индексу index
Параметры Необязательные параметры:
index – индекс элемента, который требуется удалить, по умолчанию index=-1, то есть удаляется последний элемент
Возвращаемое значение Удаляемый элемент

Интересной особенностью метода list.pop() является то, что он не просто удаляет элемент, а ещё и возвращает его:

ships = ["Фрегат", "Эсминец", "Крейсер", "Авианосец"]
deleted_ship = ships.pop(2)
print(f"Удаленный элемент: {deleted_ship}")
# Вывод: Крейсер
print(f"Список после удаления: {ships}")
# Вывод: ["Фрегат", "Эсминец", "Авианосец"]

Не обязательно указывать индекс удаляемого элемента, тогда метод удалит и возвратит последний элемент списка:

last_deleted_ship = ships.pop()
print(f"Удаленный элемент: {last_deleted_ship}")
# Вывод: Авианосец
print(f"Список после удаления: {ships}")
# Вывод: ["Фрегат", "Эсминец"]

Удаление всех элементов списка

Также можно полностью очистить список, оставив его пустым, используя метод list.clear().

Метод list.clear()
Описание Удаляет все элементы списка list
Возвращаемое значение None

Удалим все элементы списка:

homework = ["Упражнение 225", "Параграф 12", "номер 126(б, г)"]
homework.clear()
print(homework)
# Вывод: []

Изменение порядка элементов в списках

Порядок элементов списка на обратный можно изменить с помощью метода list.reverse(). Эта операция выполняется «на месте», то есть модифицирует исходный список, делая первый элемент последним, второй – предпоследним и так далее.

Метод list.reverse()
Описание Изменяет порядок элементов списка list на обратный
Возвращаемое значение None

Метод list.reverse() изменяет исходный список и возвращает None, поэтому результат его использования не следует присваивать другой переменной:

seasons = ["Зима", "Весна", "Лето", "Осень"]
seasons.reverse()
print(seasons)
# Вывд: ["Осень", "Лето", "Весна", "Зима"]

Сортировка элементов списка

Отсортировать элементы списка по возрастанию или убыванию позволяет метод list.sort().

Метод list.sort(key=None, reverse=False)
Описание Сортирует элементы списка list по возрастанию или по убыванию
Параметры Необязательные параметры:
key – функция, применяемая к каждому элементу списка перед сортировкой, по умолчанию key=None
reverse – логическое значение, определяющее направление сортировки, по умолчанию reverse=False, что означает сортировку по возрастанию
Возвращаемое значение None

По умолчанию этот метод сортирует список по возрастанию, при этом он так же изменяет исходный список и возвращает None:

temperature = [25, 21, 18, 26, 24, 25]
temperature.sort()
print(temperature)
# Вывод: [18, 21, 24, 25, 25, 26]

Список можно отсортировать по убыванию, если указать параметр reverse=True:

temperature = [25, 21, 18, 26, 24, 25]
temperature.sort(reverse=True)
print(temperature)
# Вывод: [26, 25, 25, 24, 21, 18]

Параметр key позволяет указать функцию, которая применяется к каждому элементу списка перед сортировкой.

Например, по умолчанию список строк будет отсортирован в лексикографическом порядке:

fruits = ["Абрикос", "Дыня", "Слива", "Апельсин"]
fruits.sort()
print(fruits)  
# Вывод: ['Абрикос', 'Апельсин', 'Дыня', 'Слива']

Но если мы хотим отсортировать их, например, по длине строки, то можем передать параметру key функцию len:

fruits = ["Абрикос", "Дыня", "Слива", "Апельсин"]
fruits.sort(key=len)
print(fruits)  
# Вывод: ['Дыня', 'Слива', 'Абрикос', 'Апельсин']

Так на первом месте отсортированного списка будет строка "Дыня", а не "Абрикос", так как сначала была вычислена длина строки для каждого элемента списка, и уже по ней список был отсортирован.

Функция или метод, передаваемые параметру key, должны быть написаны без скобок, так как в таком случае она должна быть передана как объект, а не вызвана.

Как мы уже говорили, метод list.sort() изменяет исходный список, поэтому если нужно сохранить порядок элементов в исходном списке и получить его отсортированную копию, то следует использовать функцию sorted().

Функция sorted(iterable, key=None, reverse=False)
Описание Создает отсортированный список из элементов итерируемого объекта iterable
Параметры iterable – итерируемый объект, который нужно отсортировать

Необязательные параметры:
key – функция, применяемая к каждому элементу списка перед сортировкой, по умолчанию key=None
reverse – логическое значение, определяющее направление сортировки, по умолчанию reverse=False, что означает сортировку по возрастанию
Возвращаемое значение Отсортированный список

В отличие от методов list.reverse() и listr.sort() результат функции sorted() можно присваивать другой переменной, так как она возвращает отсортированный список, а не None:

classroom = ["Спортзал", "12А", "Компьютерный класс"]  
sorted_classroom = sorted(classroom)  
print(sorted_classroom)
# Вывод: ["12А", "Компьютерный класс", "Спортзал"]

При этом в исходном списке порядок элементов остаётся прежним:

print(classroom)
# Вывод: [12, "Компьютерный класс", 31, 10]  

Однако при сортировке списка как с помощью метода list.sort(), так и с помощью функции sort(), важно следить за тем, чтобы все элементы сортируемого списка были одного типа данных, иначе будет вызвано исключение TypeError:

classroom = [12, "Компьютерный класс", 31, 10]  
sorted_classroom = sorted(classroom)  
print(sorted_classroom)
# Ошибка: TypeError: '<' not supported between instances of 'str' and 'int'

Как и метод list.sort() функция sorted() принимает параметры reverse и key, позволяющие задать направление сортировки и функцию, применяемую к каждому элементу.

Например, отсортируем список овощей по убыванию:

vegetables = ["Капуста", "кукуруза", "Перец", "помидор"]
print(sorted(vegetables, reverse=True))
# ['помидор', 'кукуруза', 'Перец', 'Капуста']

При сортировке в лексикографическом порядке большое значение имеет регистр букв, однако параметру key можно передать не только функцию, но и метод, например, уже знакомый нам метод приведения строки к нижнему регистру – str.lower():

vegetables = ["Капуста", "кукуруза", "Перец", "помидор"]
print((sorted(vegetables, key=str.lower, reverse=True)))
# ['помидор', 'Перец', 'кукуруза', 'Капуста']

Здесь перед сортировкой строки были приведены к нижнему регистру и только потом отсортированы в лексикографическом порядке.

Задания для самопроверки

1. Что произойдет, если с помощью метода list.append() добавить в список другой список?

 
Ответ

2. Дан список статуй statues = ["Статуя Единства", "Статуя Свободы"]. Напишите программу, которая на позицию по индексу 1 вставляет строку "Рабочий и колхозница" и выводит результирующий список на экран.

 
Ответ

3. Какие два метода используются для удаления элементов из списка? Чем они отличаются?

 
Ответ

4. Дан список чисел numbers = [1, 2, 3, 4, 5]. Напишите программу, которая удаляет элемент с индексом 2 и выводит его на экран.

 
Ответ

5. В чем заключается отличие функции sorted() от метода list.sort()?

 
Ответ

🔥 6. Напишите программу, которая запрашивает у пользователя две строки и преобразует их в списки, используя в качестве разделителя пробел. Программа должна объединить эти два списка в один и вывести на экран результирующий список, отсортированный по возрастанию длины строки.

Пример входных данных Пример выходных данных
Ой! Потерялись!
Эй! Ау! Ауу!
['Ой!', 'Эй!', 'Ау!', 'Ауу!', 'Потерялись!']
Солнце светит так ярко. Сегодня хорошая погода ['так', 'ярко.', 'Солнце', 'светит', 'погода', 'Сегодня', 'хорошая']
Купи! Ну купи! Купии слона ['Ну', 'Купи!', 'купи!', 'Купии', 'слона']
 
Ответ
arrow_back_ios Назад
Дальше arrow_forward_ios

 💬 0 комментариев
person
email