No Python, como você obtém o último elemento de uma lista?
2067
some_list[-1]
é o mais curto e mais pitonico.
De fato, você pode fazer muito mais com essa sintaxe. A some_list[-n]
sintaxe obtém o penúltimo elemento. Então, some_list[-1]
obtém o último elemento, some_list[-2]
obtém o penúltimo, etc, até o final some_list[-len(some_list)]
, o que fornece o primeiro elemento.
Você também pode definir elementos da lista dessa maneira. Por exemplo:
>>> some_list = [1, 2, 3]
>>> some_list[-1] = 5 # Set the last element
>>> some_list[-2] = 3 # Set the second to last element
>>> some_list
[1, 3, 5]
Observe que a obtenção de um item da lista por índice aumentará um IndexError
se o item esperado não existir. Isso significa que some_list[-1]
irá gerar uma exceção se some_list
estiver vazio, porque uma lista vazia não pode ter um último elemento.
some_list.last
- seria uma bela linha de códigoSe seus objetos
str()
oulist()
puderem ficar vazios da seguinte maneira:astr = ''
oualist = []
, convém usar emalist[-1:]
vez dealist[-1]
para a "mesmice" do objeto.O significado disso é:
Onde a distinção está sendo feita é que retornar um objeto de lista vazio ou um objeto str vazio é mais "último elemento" - como um objeto de exceção.
fonte
if len(my_vector) == 0 or my_vector[-1] != update_val
é um padrão viável. mas certamente não é uma solução global - seria bom ter uma forma de sintaxe, onde Nenhum foi o resultadoxs[-1] if xs else None
Você também pode fazer:
Depende do que você deseja fazer com sua lista, porque o
pop()
método excluirá o último elemento.fonte
A maneira mais simples de exibir o último elemento em python é
existem muitos outros métodos para atingir esse objetivo, mas são curtos e fáceis de usar.
fonte
list[-1]
ocorrerá um erro.a[-1:][0]
em tudo ? Ele fornece dea[-1]
qualquer maneira também. Explicação, por favor?Para obter apenas o último elemento,
passe
-1
para a notação subscrita:Explicação
Índices e fatias podem receber números inteiros negativos como argumentos.
Eu modifiquei um exemplo da documentação para indicar qual item em uma seqüência cada referências de índice, neste caso, na seqüência
"Python"
,-1
faz referência ao último elemento, o caráter,'n'
:Tarefa através da descompactação iterável
Esse método pode materializar desnecessariamente uma segunda lista com a finalidade de obter apenas o último elemento, mas por uma questão de completude (e uma vez que suporta qualquer iterável - e não apenas listas):
O nome da variável head é vinculado à lista desnecessária criada recentemente:
Se você pretende não fazer nada com essa lista, isso seria mais apropriado:
Ou, realmente, se você sabe que é uma lista (ou pelo menos aceita notação subscrita):
Em uma função
Um comentarista disse:
Seria bastante simples de definir:
Ou use
operator.itemgetter
:Em ambos os casos:
Casos especiais
Se você está fazendo algo mais complicado, pode ser mais eficiente obter o último elemento de maneiras ligeiramente diferentes.
Se você é iniciante em programação, evite esta seção, porque ela une partes semanticamente diferentes de algoritmos. Se você alterar seu algoritmo em um local, ele poderá ter um impacto não intencional em outra linha de código.
Tento fornecer advertências e condições da maneira mais completa possível, mas posso ter perdido alguma coisa. Por favor, comente se você acha que estou deixando uma ressalva.
Fatiamento
Uma fatia de uma lista retorna uma nova lista - para que possamos fatiar de -1 até o final, se desejarmos o elemento em uma nova lista:
Isso tem a vantagem de não falhar se a lista estiver vazia:
Considerando que a tentativa de acessar pelo índice gera um
IndexError
que precisaria ser tratado:Mas, novamente, o fatiamento para esse fim só deve ser feito se você precisar:
for
rotaçõesComo um recurso do Python, não há escopo interno em um
for
loop.Se você já estiver executando uma iteração completa sobre a lista, o último elemento ainda será referenciado pelo nome da variável atribuída no loop:
Esta não é semanticamente a última coisa na lista. É semanticamente a última coisa a que o nome
item
estava vinculado.Portanto, isso só deve ser usado para obter o último elemento se você
Obtendo e removendo
Também podemos alterar nossa lista original removendo e retornando o último elemento:
Mas agora a lista original foi modificada.
(
-1
é realmente o argumento padrão, portanto,list.pop
pode ser usado sem um argumento de índice):Faça isso apenas se
Esses são casos de uso válidos, mas não muito comuns.
Salvando o resto do reverso para mais tarde:
Não sei por que você faria isso, mas, para completar, como
reversed
retorna um iterador (que suporta o protocolo iterador), você pode passar o resultado paranext
:Então é como fazer o inverso disso:
Mas não consigo pensar em um bom motivo para fazer isso, a menos que você precise do resto do iterador reverso mais tarde, o que provavelmente seria mais parecido com isto:
e agora:
fonte
Para impedir
IndexError: list index out of range
, use esta sintaxe:fonte
Outro método:
fonte
lst[-1]
é a melhor abordagem, mas com iterables gerais, consideremore_itertools.last
:Código
fonte
list[-1]
recuperará o último elemento da lista sem alterar a lista.list.pop()
recuperará o último elemento da lista, mas irá alterar / alterar a lista original. Normalmente, não é recomendável alterar a lista original.Como alternativa, se, por algum motivo, você estiver procurando por algo menos pitônico, poderia usar
list[len(list)-1]
, supondo que a lista não esteja vazia.fonte
Você também pode usar o código abaixo, se não desejar obter o IndexError quando a lista estiver vazia.
fonte
Ok, mas e o comum em quase todos os idiomas
items[len(items) - 1]
? Essa é a maneira mais fácil de obter o último elemento da IMO, porque não requer nada de conhecimento pitônico .fonte
some_list[-1]
abordagem, porque é mais lógico e mostra o que realmente está fazendo melhor do quesome_list[-1]
na minha opinião.