Метод list.insert() в Python, вставить элемент по индексу
Метод 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]
- ОБЗОРНАЯ СТРАНИЦА РАЗДЕЛА
- Изменение/замена элемента списка по индексу
- Изменение части списка операцией среза
- Изменение списка срезом c заданным шагом
- Удаление части списка операцией среза
- Удаление части списка по срезу с заданным шагом
- Метод list.append(), добавляет значение в конец списка
- Метод list.clear(), очищает список
- Метод list.copy(), копия списка
- Метод list.extend(), расширяет список другой последовательностью
- Расширение списка его содержимым
- Метод list.insert(), вставить элемент по индексу
- Метод list.pop(), получение с удалением элемент списка
- Метод list.remove(), удаление элемента списка по значению
- Метод list.reverse(), разворачивает элементы списка
- Удаление элемента списка по индексу
- Удаление дубликатов из списка Python с сохранением очередности
Как работает функция insert в Python?
Метод insert в Python нужен для того, чтобы добавить новый элемент в любое место списка. Метод принимает два параметра:
- индекс по которому будет вставлен элемент
- сам элемент
Пример использования метода insert :
l = [1, 2, 3] l.insert(1, 99) # => [1, 99, 2, 3]
Если попытаться передать несуществующий индекс, никакой ошибки не будет, элемент добавится с соответствующего края:
l = [0] l.insert(-100, 1) # => [1, 0] l.insert(100, 2) # => [1, 0, 2]
Методы списка
В Python у списков имеется одиннадцать методов. Условно разделим их на группы:
- увеличивающие количество элементов — append , extend , insert
- уменьшающие количество элементов — clear , pop , remove
- изменяющие порядок элементов — reverse , sort
- методы «поиска» — index , count
- копирование списка — copy
Методы append и extend производят добавление в конец списка. Разница между ними заключается в том, что с помощью append можно добавить только один элемент, в то время extend позволяет расширить список сразу на несколько. При этом оба метода принимают один аргумент. В случае extend это должна быть итерируемая последовательность (кортеж, список, строка и другое), каждый элемент которой станет отдельным элементом списка.
>>> lst = ['a', 45, 89, 'who'] >>> lst.append(67) >>> lst ['a', 45, 89, 'who', 67]
>>> b [1, 2, 3] >>> c = (9, 10) >>> b.extend(c) >>> b [1, 2, 3, 9, 10] >>> b.extend("abc") >>> b [1, 2, 3, 9, 10, 'a', 'b', 'c'] >>> b.extend([12, 19]) >>> b [1, 2, 3, 9, 10, 'a', 'b', 'c', 12, 19]
Если требуется вставить элемент в произвольное место списка, используется метод insert . Он принимает два аргумента: сначала индекс, потом значение. Вставка элемента происходит перед элементом, который до этого занимал указанную позицию.
>>> lst.insert(0,10) >>> lst [10, 'a', 45, 89, 'who', 67, 'a1', (1, 2, 3)] >>> lst.insert(len(lst),10) >>> lst [10, 'a', 45, 89, 'who', 67, 'a1', (1, 2, 3), 10] >>> lst.insert(3, 10) >>> lst [10, 'a', 45, 10, 89, 'who', 67, 'a1', (1, 2, 3), 10]
Для удаления из списка одного элемента используют методы remove и pop . Метод remove принимает значение удаляемого элемента, и удаляет первое его вхождение. Если элемента нет в списке, возникает исключение ValueError . Метод pop удаляет элемент по индексу. При этом возвращает удаленное из списка значение в программу. Вызов pop() без аргументов удаляет и возвращает последний элемент. Метод pop генерирует исключение IndexError , если указан индекс за пределами диапазона индексов списка.
lst = [4, 3, 5, 1, 8, 1] d = int(input()) try: lst.remove(d) except ValueError: print('No the item') print(lst)
1 [4, 3, 5, 8, 1]
2 No the item [4, 3, 5, 1, 8, 1]
lst = ['a', 'f', 'b', 'x', 'y', 'k'] i = int(input()) try: value = lst.pop(i) except IndexError: value = 'Index Error' print(value)
10 Index Error
Метод clear удаляет все элементы из списка.
>>> a = [1, 2] >>> a.clear() >>> a []
Метод reverse изменяет порядок элементов на обратный. Метод переворачивает список на месте, то есть тот, к которому применяется.
>>> lst ['a', 10, 89, 'who', 67, 'a1', (1, 2, 3), 10] >>> lst.reverse() >>> lst [10, (1, 2, 3), 'a1', 67, 'who', 89, 10, 'a']
Метод sort выполняет сортировку списка на месте (список изменяется, а не возвращается новый). Если sort() вызывается без аргументов, сортировка происходит по возрастанию. Для сортировки по убыванию следует именованному параметру reverse присвоить True .
>>> li = [4, 1, 9, 5] >>> li.sort() >>> li [1, 4, 5, 9]
>>> st = [4, 2, 7, 5] >>> st.sort(reverse=True) >>> st [7, 5, 4, 2]
Для более сложных сортировок используется параметр key , которому присваивается функция, выполняющая действия над каждым элементом списка. Сортировка происходит на основе вернувшихся значений. Подробнее об этом в этой статье.
>>> n = [-4, 3, 9, -5, 2] >>> n.sort(key=lambda i: abs(i)) >>> n [2, 3, -4, -5, 9]
Метод count считает, сколько раз в списке встречается переданный аргумент.
>>> a = [1, 0, 1, 1, 0] >>> a.count(1) 3
Метод index возвращает индекс указанного элемента. Если таких значений несколько, метод вернет индекс только первого. Если таких элементов нет, генерируется исключение. Вторым и третьим аргументом можно указать срез для поиска.
>>> a = ['a', 'c', 'e', 'a', 'b'] >>> a.index('a') 0 >>> a.index('a', 2) 3 >>> a.index('a', 2, 4) 3 >>> a.index('a', 2, 3) Traceback (most recent call last): File "", line 1, in ValueError: 'a' is not in list
Метод copy создает поверхностную копию списка. Так при наличии вложенных списков копируются не они сами, а ссылки на них. В результате изменение вложенных списков через список-оригинал будет видно также в списке-копии.
>>> a = [1, 2] >>> b = a.copy() >>> b.append(3) >>> a [1, 2] >>> b [1, 2, 3]
>>> c = [1, 2, [3, 4]] >>> d = c.copy() >>> d.append(5) >>> c[2].append(6) >>> c [1, 2, [3, 4, 6]] >>> d [1, 2, [3, 4, 6], 5]
Энциклопедия Python:insert()
Функция insert() в Python используется для вставки элемента в список на заданную позицию.
Примеры использования
Синтаксис функции insert() выглядит следующим образом:
list.insert(index, element)
где list — список, в который нужно вставить элемент, index — индекс позиции, на которую нужно вставить элемент, element — элемент, который нужно вставить.
Функция изменяет исходный список, а не создает новый.
Пример использования функции insert() :
numbers = [1, 2, 3, 5, 6] numbers.insert(3, 4) print(numbers) # [1, 2, 3, 4, 5, 6]
В данном примере элемент 4 вставляется на позицию с индексом 3 .
Если индекс, переданный в функцию insert() , больше, чем длина списка, то элемент будет вставлен в конец списка.
Если индекс отрицательный, то элемент будет вставлен в список в обратном порядке. Например:
numbers = [1, 2, 3, 5, 6] numbers.insert(-1, 4) print(numbers) # [1, 2, 3, 5, 4, 6]
В данном примере элемент 4 вставляется на позицию перед последним элементом списка.