У меня есть это:
>>> a = [1, 2, 4]
>>> print a
[1, 2, 4]
>>> print a.insert(2, 3)
None
>>> print a
[1, 2, 3, 4]
>>> b = a.insert(3, 6)
>>> print b
None
>>> print a
[1, 2, 3, 6, 4]
Есть ли способ получить обновленный список в результате вместо обновления исходного списка на месте?
python
python-2.7
list
insert
АТОзТОА
источник
источник
b = a[:].insert(2,3)
кажется довольно коротким, не влияет на исходный список и довольно информативен.>>> a = [1, 2, 3, 4] >>> b = a[:].insert(2, 5) >>> print b None
Ответы:
l.insert(index, obj)
на самом деле ничего не возвращает. Он просто обновляет список.Как сказали в АТО, можно
b = a[:index] + [obj] + a[index:]
. Однако другой способ:источник
Самый эффективный подход
Вы также можете вставить элемент, используя индексирование фрагментов в списке. Например:
Чтобы вставить несколько элементов вместе по заданному индексу , все, что вам нужно сделать, это использовать
list
несколько элементов, которые вы хотите вставить. Например:Альтернатива с использованием понимания списка (но очень медленная с точки зрения производительности) :
В качестве альтернативы, она может быть достигнута с помощью списка понимание с
enumerate
тоже. (Но, пожалуйста, не делайте этого. Это просто для иллюстрации) :Сравнение производительности всех решений
Вот
timeit
сравнение всех ответов со списком из 1000 элементов для Python 3.4.5:Мой ответ с использованием нарезанной вставки - Самый быстрый (3,08 мкс на цикл)
Принятый ответ ATOzTOA на основе слияния нарезанных списков - секунда (6,71 мкс на цикл)
Ответ Раши Панчала с наибольшим количеством голосов
list.insert(...)
- третий (26,5 мксек за цикл)Мой ответ со списком понимания и
enumerate
- четвертым (очень медленно, 168 мкс на цикл)источник
3, 3.5
в этот список (по порядку) ->a[2:2] = [3,3.5]
. Очень аккуратноlist.insert
и срезом), а на Python 3.8 эта разница полностью исчезла.list.insert
Очевидно, что самый простой способ вставить элемент - это использовать .Самый короткий у меня получился:
b = a[:2] + [3] + a[2:]
источник
Самый чистый подход - скопировать список, а затем вставить объект в копию. В Python 3 это можно сделать с помощью
list.copy
:На Python 2 копирование списка может быть выполнено с помощью
new = old[:]
(это также работает на Python 3).По производительности нет отличий от других предложенных методов:
источник
Используйте метод Python list insert () . Использование:
Пример:
Возврат
[1, 2, 3, 4, 5]
источник
Is there anyway I can get the updated list as result, instead of updating the original list in place?
ваш ответ обратный.