Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Как добавить элемент в конец списка?
Добавление элемента в конец списка — базовая операция в Python. Вот все основные подходы:
1. Метод append() — самый простой способ
Добавляет один элемент в конец списка:
numbers = [1, 2, 3]
numbers.append(4)
print(numbers) # [1, 2, 3, 4]
# Работает с любыми типами
fruits = ['apple', 'banana']
fruits.append('orange')
print(fruits) # ['apple', 'banana', 'orange']
# Даже сложные объекты
data = [{'id': 1}, {'id': 2}]
data.append({'id': 3})
print(data) # [{'id': 1}, {'id': 2}, {'id': 3}]
Основные характеристики:
- Сложность: O(1) — очень быстро
- Изменяет исходный список (in-place)
- Возвращает None (не новый список)
2. Оператор + для конкатенации
Создаёт новый список без изменения оригинала:
numbers = [1, 2, 3]
new_numbers = numbers + [4]
print(numbers) # [1, 2, 3] — исходный не изменился
print(new_numbers) # [1, 2, 3, 4]
# Можно добавить несколько элементов сразу
list_with_multiple = numbers + [4, 5, 6]
print(list_with_multiple) # [1, 2, 3, 4, 5, 6]
Основные характеристики:
- Сложность: O(n) — медленнее, так как копирует весь список
- Не изменяет исходный список
- Создаёт новый список
3. Метод extend() для добавления нескольких элементов
Добавляет все элементы из итерируемого объекта:
numbers = [1, 2, 3]
numbers.extend([4, 5, 6])
print(numbers) # [1, 2, 3, 4, 5, 6]
# Работает с кортежами
numbers.extend((7, 8))
print(numbers) # [1, 2, 3, 4, 5, 6, 7, 8]
# Работает со строками (добавляет по символам!)
letters = ['a', 'b']
letters.extend('cd')
print(letters) # ['a', 'b', 'c', 'd']
# Работает с генераторами
numbers = [1, 2]
numbers.extend(x*2 for x in range(3))
print(numbers) # [1, 2, 0, 2, 4]
Основные характеристики:
- Сложность: O(k), где k — количество добавляемых элементов
- Изменяет исходный список
- Добавляет элементы по одному
4. Срезы для вставки в конец
Можно использовать срезы, хотя это менее очевидно:
numbers = [1, 2, 3]
numbers[len(numbers):] = [4, 5]
print(numbers) # [1, 2, 3, 4, 5]
# Или с пустым срезом в конце
numbers[len(numbers):] = [6]
print(numbers) # [1, 2, 3, 4, 5, 6]
5. Метод insert() для добавления в конец
Хотя insert предназначен для вставки в конкретную позицию:
numbers = [1, 2, 3]
numbers.insert(len(numbers), 4) # Вставляет в позицию len(numbers)
print(numbers) # [1, 2, 3, 4]
# Это эквивалентно append(), но медленнее
# Сложность: O(n) вместо O(1)
Практически никогда не используется для добавления в конец.
6. Распаковка для конкатенации (Python 3.5+)
Элегантный способ объединить списки:
list1 = [1, 2, 3]
list2 = [4, 5]
combined = [*list1, *list2]
print(combined) # [1, 2, 3, 4, 5]
# Или добавить один элемент
new_list = [*list1, 4]
print(new_list) # [1, 2, 3, 4]
7. Сравнение методов
import timeit
# Тест скорости для большого списка
setup = "numbers = list(range(100000))"
# append() — O(1), очень быстро
time_append = timeit.timeit("numbers.append(1)", setup=setup, number=1000)
print(f"append: {time_append:.6f}s")
# + operator — O(n), копирует весь список
time_concat = timeit.timeit("numbers = numbers + [1]", setup=setup, number=1000)
print(f"concat: {time_concat:.6f}s") # Намного медленнее!
# extend() — O(k), эффективнее для нескольких элементов
time_extend = timeit.timeit("numbers.extend([1, 2, 3])", setup=setup, number=1000)
print(f"extend: {time_extend:.6f}s")
Рекомендации:
- append() — стандартный способ, когда нужно изменить список, O(1)
- extend() — когда добавляешь несколько элементов, O(k)
- + — когда нужна новая переменная, исходный список не должен меняться, O(n)
- insert(len(list), x) — никогда не используй для конца, это медленнее append()
- Срезы — редко нужны для добавления в конец
В 99% случаев используй append() — это стандарт Python сообщества и самый эффективный вариант.