como posso adicionar ao contrário? jiboia
.append
A função adiciona elementos à lista.
Como posso adicionar elementos à lista? Ao contrário? Então esse índice zero é um novo valor, e os valores antigos sobem no índice?
O que faz
[a,b,c,d,e]
O que eu gostaria.
[e,d,c,b,a]
Muito obrigado.
6 answers
a
, a = [1, 2, 3]
Agora suponha que você se pergunta Que tipo de coisas você pode fazer a essa lista:
dir(a)
Hmmm... o que será que isto faz?..
help(a.insert)
Insira o objecto antes do Índice, dizes tu? Isso parece-se muito com o que eu quero fazer! Se eu quiser inserir algo no início da lista, isso seria antes de índice 0. Que objecto quero inserir? Vamos tentar o 7...
a.insert(0, 7)
print a
Bem, olha para aquele 7. a frente da lista!
O TL; o DR: dir()
vai deixá-lo ver o que está disponível, help()
vai mostrar-lhe como funciona, e depois pode brincar com ele e ver o que faz, ou procurar alguma documentação, uma vez que agora sabe como se chama a funcionalidade que deseja.
Seria mais eficiente usar um deque
(fila de fim duplo) para isto. Inserir no índice 0 é extremamente caro em listas, uma vez que cada elemento deve ser deslocado sobre o qual requer O(N) Tempo de execução, em um deque
a mesma operação é O(1).
>>> from collections import deque
>>> x = deque()
>>> x.appendleft('a')
>>> x.appendleft('b')
>>> x
deque(['b', 'a'])
Usar somelist.insert(0, item)
para colocar item
no início de somelist
, mudando todos os outros elementos para baixo. Note que para listas grandes esta é uma operação Muito Cara. Considere a utilização de Duque em vez disso, se irá adicionar itens ou remover itens de ambos os extremos da sequência.
Podes fazer
your_list=['New item!!']+your_list
Mas o método de inserção também funciona.
Se usar o comando list insert
do Python com 0 para o valor da posição, irá inserir o valor no topo da lista, inserindo assim em ordem inversa:
your_list.insert(0, new_item)
Use o seguinte (assumindo que o x é o que deseja pré-enviar):
your_list = [x] + your_list
Ou:
your_list.insert(0, x)