Как добавить элемент в список Python: append, insert и extend

Списки в Python — это как швейцарский нож для любого разработчика. Они хранят любые элементы, изменяемы и поддерживают кучу удобных методов. Но вот ты только начал писать скрипт, и тут встает вопрос: как добавить элемент в список? Вариантов несколько, и у каждого свои приколы. Давай разберёмся, где использовать append(), когда нужен insert(), а в каких случаях не обойтись без extend().

Зачем это вообще нужно?

Добавление элементов — базовая операция. Ты парсишь логи, собираешь данные с API, строишь пайплайн обработки — почти всегда нужно динамически расширять список. Если делать это неправильно, можно получить неожиданные баги, странные ошибки или просто неэффективный код.

Что потребуется

  • Python — версия 3.6+ (но всё нижеописанное работает даже в Python 2.7, если вдруг ты динозавр).
  • Любая ОС: Windows, Linux, macOS — без разницы.
  • Железо? Хватит даже Raspberry Pi Zero 🙂
  • IDE или редактор кода (VS Code, PyCharm, vim, nano — по вкусу).

Установка Python (если вдруг нет)

  1. Проверь, есть ли Python:
    python --version

    или

    python3 --version
  2. Если нет — скачай и поставь тут.
  3. В Linux:
    sudo apt update && sudo apt install python3
  4. В macOS:
    brew install python

Использование: полный список команд и вариантов

Вот где начинается веселье. Смотри, есть три основных метода:

1. append()

Добавляет один элемент в конец списка.


fruits = ['apple', 'banana']
fruits.append('orange')
print(fruits)  # ['apple', 'banana', 'orange']

Если зааппендить список, то он добавится как один элемент:


fruits.append(['kiwi', 'mango'])
print(fruits)  # ['apple', 'banana', 'orange', ['kiwi', 'mango']]

2. insert()

Вставляет один элемент на нужную позицию (по индексу).


numbers = [1, 2, 4]
numbers.insert(2, 3)  # Вставить 3 на позицию с индексом 2
print(numbers)  # [1, 2, 3, 4]

Если индекс больше длины списка — добавит в конец. Если меньше нуля — в начало.

3. extend()

Добавляет все элементы из другого итерируемого объекта (list, tuple, set, str и т.д.) в конец списка.


fruits = ['apple', 'banana']
fruits.extend(['cherry', 'melon'])
print(fruits)  # ['apple', 'banana', 'cherry', 'melon']

Можно даже так (но осторожно!):


fruits.extend('peach')
print(fruits)  # ['apple', 'banana', 'cherry', 'melon', 'p', 'e', 'a', 'c', 'h']

Ошибки и как делать не надо

  • append вместо extend: Очень частый баг — делаешь mylist.append([1,2,3]) и получаешь [[1,2,3]] вместо [1,2,3].
  • extend строкой: mylist.extend('abc') добавит три элемента: 'a', 'b', 'c'. Не всегда ожидаемо.
  • insert в огромные списки: Вставка в начало (insert(0, ...)) у больших списков медленная — O(n). Лучше избегать в критичных местах.
  • Использовать + для расширения: mylist = mylist + [4,5] создаёт новый объект — не всегда это надо (особенно если список большой).

Пример реального использования в окружении

Допустим, ты пишешь парсер логов для nginx. Собираешь IP-адреса, которые делали запросы к серверу:


ips = []
with open('access.log') as f:
    for line in f:
        ip = line.split()[0]
        ips.append(ip)

А если ты собираешь сразу пачку IP из разных файлов:


all_ips = []
for logfile in ['access1.log', 'access2.log']:
    with open(logfile) as f:
        ips = [line.split()[0] for line in f]
        all_ips.extend(ips)

Если нужно вставить «служебный» IP в начало списка:


all_ips.insert(0, '127.0.0.1')

Заключение

В Python куча способов добавить элемент в список, и у каждого метода своя задача. append() — для одного элемента, insert() — для вставки на нужное место, extend() — для пачки элементов. Не путай их, и твой код будет чище и предсказуемей.

Официальная дока: https://docs.python.org/3/tutorial/datastructures.html#more-on-lists

Если что — всегда можно проверить руками в python REPL. Удачи!

Хотите прочитать больше про Администрирование?
Отзывов нет.

Ваш отзыв

Пожалуйста, заполните поля снизу и добавьте отзыв!.
Имя *
E-mail *
Сайт
Сообщение *