В чем разница между методами append() и extend() у списков в Python?

Ответ

Основное различие заключается в том, как эти методы обрабатывают итерируемые объекты (например, другие списки).

  • append(item): Добавляет переданный item как один-единственный элемент в конец списка. Если item — это список, он будет добавлен как вложенный список.
  • extend(iterable): Итерируется по переданному iterable и добавляет каждый его элемент по отдельности в конец списка, расширяя его.

Ключевые отличия:

Характеристика append() extend()
Аргумент Любой объект Итерируемый объект
Результат Добавляет 1 элемент Добавляет N элементов
Изменение длины len() + 1 len() + len(iterable)

Пример:

# Исходный список
my_list = [1, 2, 3]

# 1. Использование append() со списком
list_to_append = [4, 5]
my_list.append(list_to_append)
# Результат: [1, 2, 3, [4, 5]]
# Длина списка увеличилась на 1
print(f"После append: {my_list}")

# 2. Использование extend() со списком
list_to_extend = [6, 7]
my_list.extend(list_to_extend)
# Результат: [1, 2, 3, [4, 5], 6, 7]
# Длина списка увеличилась на 2 (количество элементов в list_to_extend)
print(f"После extend: {my_list}")

Ответ 18+ 🔞

Э, слушай, а вот тут у нас классика жанра, про которую каждый второй новичок ломает голову, а потом охуевает, когда понимает. Разница между append и extend — это как между «положить чемодан в багажник» и «вывалить всё барахло из чемодана в тот же багажник». Понимаешь, да?

Короче, смотри, чтобы не быть полупидором в коде:

  • append(штука) — это как взять хоть что: хоть один носок, хоть целый чемодан с носками, и плюхнуть это одним куском в конец списка. Чемодан останется чемоданом, внутри списка. Длина списка вырастет ровно на единичку, даже если в чемодане овердохуища носков.
  • extend(чемодан) — это взять тот самый чемодан, открыть его нахуй, и по одному выкидывать оттуда каждый носок в конец списка. Чемодана внутри не останется, зато носков прибавится. Длина списка вырастет на столько, сколько было носков в чемодане.

Короче, табличка, чтобы совсем пиздец было понятно:

Прикол append() extend()
Что суём Что угодно (хоть тапок, хоть коллекцию тапков) Только то, по чему можно пройтись циклом (итерируемое)
Что будет в списке Один новый элемент (даже если это коллекция) Много новых элементов (каждый из коллекции)
На сколько вырастет список Ровно на 1 На столько, сколько элементов в переданной хуйне

Ну и смотри, как это выглядит вживую, блядь:

# Был у нас скромный такой список
my_list = [1, 2, 3]

# 1. append — суём пачку новых цифр как один кусок
пачка_цифр = [4, 5]
my_list.append(пачка_цифр)
# Смотри, что получилось: [1, 2, 3, [4, 5]]
# Видишь? Целый список [4,5] сидит там как один элемент, как та самая мартышлюшка в коробке.
print(f"После append: {my_list}")

# 2. extend — вытряхиваем из пачки всё по одному
другая_пачка = [6, 7]
my_list.extend(другая_пачка)
# А теперь смотри: [1, 2, 3, [4, 5], 6, 7]
# Шестёрка и семёрка пришли по-отдельности, как приличные цифры. Никаких вложенностей, всё плоское.
print(f"После extend: {my_list}")

Вот и вся магия, ёпта. Главное — не перепутай, а то получишь список в списке там, где не ждал, и потом будешь ебаться с индексами, как дурак.