Как работает append()
append() принимает один аргумент любого типа и добавляет его в конец списка как есть.
nums = [1, 2, 3]
nums.append(4)
# [1, 2, 3, 4]
nums.append([5, 6])
# [1, 2, 3, 4, [5, 6]] — вложенный список как один элемент
Особенности: список удлиняется ровно на один элемент; аргумент может быть чем угодно — числом, строкой, другим списком, объектом твоего класса.
Как работает extend()
extend() принимает итерируемый объект (список, кортеж, множество, строку и т.п.) и добавляет каждый его элемент в конец списка.
nums = [1, 2, 3]
nums.extend([4, 5])
# [1, 2, 3, 4, 5]
nums.extend((6, 7))
# [1, 2, 3, 4, 5, 6, 7]
nums.extend("ab")
# [1, 2, 3, 4, 5, 6, 7, 'a', 'b']
Особенности: длина списка увеличивается на количество элементов в переданном итерируемом; нельзя передать неитерируемый объект (например, nums.extend(5) вызовет TypeError).
Как ответить на собеседовании
Оба метода добавляют данные в конец списка, но по‑разному. append(x) добавляет один объект как элемент списка, поэтому при append([4, 5]) ты получишь вложенный список. extend(iterable) разворачивает итерируемый объект и добавляет каждый его элемент по отдельности, так что при extend([4, 5]) список становится [1, 2, 3, 4, 5]. Если нужно добавить один объект — используй append, если «слить» в список содержимое другого итерируемого — extend.