Eu tenho isto:
>>> 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]
Existe uma maneira de obter a lista atualizada como resultado, em vez de atualizar a lista original no local?
python
python-2.7
list
insert
ATOzTOA
fonte
fonte
b = a[:].insert(2,3)
parece bem curto, não afeta a lista original e é bem descritivo.>>> a = [1, 2, 3, 4] >>> b = a[:].insert(2, 5) >>> print b None
Respostas:
l.insert(index, obj)
não retorna nada. Ele apenas atualiza a lista.Como disse o ATO, você pode fazer
b = a[:index] + [obj] + a[index:]
. No entanto, outra maneira é:fonte
Abordagem de desempenho mais eficiente
Você também pode inserir o elemento usando a indexação de fatias na lista. Por exemplo:
Para inserir vários elementos juntos em um determinado índice , tudo o que você precisa fazer é usar um
list
dos vários elementos que deseja inserir. Por exemplo:Alternativa de compreensão de lista (mas muito lenta em termos de desempenho) :
Como alternativa, isso pode ser alcançado usando a compreensão de lista com
enumerate
também. (Mas, por favor, não faça assim. É apenas para ilustração) :Comparação de desempenho de todas as soluções
Aqui está a
timeit
comparação de todas as respostas com a lista de 1000 elementos para Python 3.4.5:Minha resposta usando inserção fatiada - Mais rápido (3,08 µs por loop)
Resposta aceita pela ATOzTOA com base na fusão de listas fatiadas - Segundo (6,71 µs por loop)
Resposta de Rushy Panchal com mais votos usando
list.insert(...)
- Terceiro (26,5 usec por loop)Minha resposta com Compreensão de lista e
enumerate
- Quarto (muito lento com 168 µs por loop)fonte
3, 3.5
nessa lista (na ordem) ->a[2:2] = [3,3.5]
. Muito legallist.insert
atribuição de fatia) e no Python 3.8 essa diferença desapareceu completamente. A maneira mais clara de inserir um elemento é usandolist.insert
, obviamente.O mais curto que consegui:
b = a[:2] + [3] + a[2:]
fonte
A abordagem mais limpa é copiar a lista e inserir o objeto na cópia. No Python 3, isso pode ser feito por meio de
list.copy
:No Python 2, a cópia da lista pode ser feita via
new = old[:]
(isso também funciona no Python 3).Em termos de desempenho, não há diferença para outros métodos propostos:
fonte
Use o método insert () da lista do Python . Uso:
Exemplo:
Devoluções
[1, 2, 3, 4, 5]
fonte
Is there anyway I can get the updated list as result, instead of updating the original list in place?
sua resposta faz o oposto.