/
Вопросы и ответы
/
Python
/

Как работает функция insert в Python?

Как работает функция insert в Python?

4 года назад

Andrey Moshkov

Ответы

0

Метод insert в Python нужен для того, чтобы добавить новый элемент в любое место списка. Метод принимает два параметра:

  1. индекс по которому будет вставлен элемент
  2. сам элемент

Пример использования метода insert:

1
2
l = [1, 2, 3]
l.insert(1, 99) # => [1, 99, 2, 3]

Если попытаться передать несуществующий индекс, никакой ошибки не будет, элемент добавится с соответствующего края:

1
2
3
l = [0]
l.insert(-100, 1) # => [1, 0]
l.insert(100, 2) # => [1, 0, 2]

4 года назад

Kirill Nagorniy

0

insert() — метод списка. Он вставляет элемент на указанную позицию и сдвигает остальные вправо:

1
2
3
fruits = ['яблоко', 'груша', 'слива']
fruits.insert(1, 'банан')
print(fruits)  # ['яблоко', 'банан', 'груша', 'слива']

Первый аргумент — индекс, перед которым встанет элемент. Второй — сам элемент.

В начало и в конец

1
2
fruits.insert(0, 'киви')            # в начало
fruits.insert(len(fruits), 'мёд')   # в конец, то же что append

Индекс за пределами списка

Ошибки не будет:

1
2
3
4
5
6
nums = [1, 2, 3]
nums.insert(100, 4)
print(nums)  # [1, 2, 3, 4] — в конец

nums.insert(-1, 99)
print(nums)  # [1, 2, 3, 99, 4] — перед последним

Отрицательный индекс считается с конца: insert(-1, x) ставит элемент перед последним. В конец добавляет append.

insert возвращает None

1
2
3
nums = [1, 2]
nums = nums.insert(0, 0)
print(nums)  # None

Метод меняет сам список. Присваивать результат не нужно.

Вставить несколько элементов

insert добавляет один элемент. Список целиком станет вложенным:

1
2
3
nums = [1, 4]
nums.insert(1, [2, 3])
print(nums)  # [1, [2, 3], 4]

Вставить элементы по отдельности — через срез:

1
2
3
nums = [1, 4]
nums[1:1] = [2, 3]
print(nums)  # [1, 2, 3, 4]

Скорость

Вставка в начало длинного списка сдвигает все элементы, и на сотнях тысяч вставок это медленно. Для частых вставок в начало используют collections.deque с методом appendleft().

Вставка в отсортированный список

1
2
3
4
5
import bisect

scores = [10, 20, 40]
bisect.insort(scores, 30)
print(scores)  # [10, 20, 30, 40]

insort сам находит позицию, и список остаётся отсортированным.

У строк и словарей insert нет

Строки неизменяемые: s = s[:2] + 'X' + s[2:]. Словари добавляют ключ присваиванием: d['key'] = value.

Списки и их методы разбирают в бесплатном курсе «Основы Python».

10 дней назад

Никита Вихров

+7 800 100 22 47

бесплатно по РФ

+7 495 085 21 62

бесплатно по Москве

108813 г. Москва, вн.тер.г. поселение Московский,
г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3
ОГРН 1217300010476
ИНН 7325174845