Ответ
Основное различие заключается в том, как эти методы обрабатывают итерируемые объекты (например, другие списки).
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}")
Вот и вся магия, ёпта. Главное — не перепутай, а то получишь список в списке там, где не ждал, и потом будешь ебаться с индексами, как дурак.