← Назад к вопросам

Как добавить элемент в конец списка?

1.2 Junior🔥 141 комментариев
#Soft Skills

Комментарии (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 сообщества и самый эффективный вариант.