sequence.insert(i, x)
sequence
- изменяемая последовательность, list
или bytearray
,i
- целое число,x
- произвольный объект, удовлетворяющий любым ограничениям типа и значения, наложенным sequence.sequence
Операция позволяет вставлять объект в последовательность по индексу, в определенное место.
Метод sequence.insert(i, x)
вставляет объект x
в последовательность sequence
по индексу i
. Если значение индекса i
находится за пределами длины последовательности, то объект x
вставляется в конец последовательности.
Операция вставки объекта в последовательность по индексу эквивалентна выполнению sequence[i:i] = [x]
.
Эта операция поддерживаются изменяемыми типами последовательностей.
Примечание. Если необходимо осуществлять частые вставки в начало изменяемой последовательности, такие как списки или массивы байтов, то для лучшей производительности кода используйте двустороннюю очередь collections.deque()
. Этот тип данных предоставляет модуль collections
. Тип collections.deque()
специально оптимизирован для таких действий.
Внимание. Встроенный тип list
не оптимизирован для совершения частых вставок в начало списка. При осуществлении частых вставок элементов в начало списка или любое другое место (кроме конца списка), ваш код будет значительно притормаживать (из за частого изменения индексов элементов списка).
Для оптимизации таких действий, применяйте двустороннюю очередь collections.deque()
. Тем более данный тип позволяет расширять начало списка другим списком.
# использование lst.insert() >>> x = [12, 15, 18] >>> x.insert(0, 3) >>> x # [3, 12, 15, 18] # использование двусторонней очереди >>> import collections >>> dq = collections.deque(x) >>> dq.appendleft(2) >>> x = list(dq) >>> x # [2, 3, 12, 15, 18] # расширение начала списка другим списком >>> ext_lst = [0, 1, 2] >>> dq.extendleft(ext_lst[::-1]) >>> list(dq) # [0, 1, 2, 2, 3, 12, 15, 18]
Для этого определим длину списка, затем выполним целочисленное деление на 2, что бы узнать индекс середины списка.
>>> x = [1, 2, 3, 12, 15, 18] >>> n = len(x) >>> i = n//2 >>> x.insert(i, 50) >>> x # [1, 2, 3, 50, 12, 15, 18]
>>> x = [2, 0, 3, 12, 15, 18] # вставка кортежа в список по индексу >>> x.insert(5, ('one', 'two')) >>> x # [2, 0, 3, 12, 15, ('one', 'two'), 18] # если индекс за пределами длины последовательности >>> x.insert(100, 100) >>> x # [2, 0, 3, 12, 15, ('one', 'two'), 18, 100] # вставка элемента в список по отрицательному индексу >>> x.insert(-3, 'foo') >>> x # [2, 0, 3, 12, 15, 'foo', ('one', 'two'), 18, 100] # Эквивалент >>> x[5:5] = [25] >>> x # [2, 0, 3, 12, 15, 25, 'foo', ('one', 'two'), 18, 100]