Introdução
Listas são úteis de diferentes maneiras em comparação com outros tipos de dados, devido à sua versatilidade. Neste artigo vamos dar uma vista de olhos a uma das operações mais comuns com listas – encontrar o índice de um elemento.
Vamos dar uma vista de olhos a diferentes cenários de encontrar um elemento, ou seja, encontrar o primeiro, o último, e todas as ocorrências de um elemento. Assim como o que acontece quando o elemento que procuramos não existe.
Usando o índice() Função
O parâmetro element
representa naturalmente o elemento que procuramos. O parâmetro start
e end
são opcionais e representam a gama de índices em que procuramos o element
.
O valor por defeito para start
0
(procurando desde o início), e o valor por defeito para end
é o número de elementos da lista (procurando até ao fim da lista).
A função retorna a primeira posição do element
na lista que poderia encontrar, independentemente de quantos elementos iguais existam após a primeira ocorrência.
Finding the First Occurrence of an Element
Using the index()
function without setting any values for start
e end
irá dar-nos a primeira ocorrência do element
que procuramos:
my_list = first_occurrence = my_list.index('b')print("First occurrence of 'b' in the list: ", first_occurrence)
Que nos dará o resultado esperado:
First occurrence of 'b' in the list: 1
Encontrar todas as ocorrências de um elemento
Para encontrar todas as ocorrências de um elemento, podemos usar o parâmetro opcional start
de modo a procurarmos apenas em determinados segmentos da lista.
Por exemplo, digamos que seria a primeira ocorrência de um elemento no índice 3
. A fim de encontrar o próximo, precisaríamos de continuar a nossa busca pela primeira ocorrência desse elemento após index 3
. Repetiríamos este processo, mudando onde a nossa pesquisa começa, desde que encontrássemos novas ocorrências do elemento:
A execução deste código dar-nos-ia:
The element was found at:
Tivemos de usar um try
bloco aqui, uma vez que a função index()
atira um erro quando não consegue encontrar o especificado element
no intervalo dado. Isto pode ser incomum para programadores mais habituados a outras línguas, uma vez que funções como estas normalmente retornam -1
null
quando o elemento não pode ser encontrado.
No entanto, em Python temos de ter cuidado e usar um bloco try
quando usamos esta função.
Outra forma mais limpa de fazer esta mesma coisa seria usando a compreensão da lista e ignorando a função index()
ao todo:
que nos daria o mesmo resultado que antes. Esta abordagem tem a vantagem adicional de não utilizar o bloco try
.
Finding the Last Occurrence of an Element
Se precisar de encontrar a última ocorrência de um elemento na lista, há duas abordagens que pode utilizar com a função index()
:
- Reversa a lista e procura a primeira ocorrência na lista invertida
- Vá através de todas as ocorrências do elemento, e apenas mantenha o registo da última ocorrência
P>P>Precisando a primeira abordagem, se soubéssemos a primeira ocorrência do element
numa lista invertida, poderíamos encontrar a posição da última ocorrência na lista original. Mais especificamente, podemos fazer isto subtraindo reversed_list_index - 1
do comprimento da lista original:
que nos daria o resultado desejado:
6
Como segunda abordagem, podemos ajustar o código que utilizámos para encontrar todas as ocorrências e apenas manter o registo da última ocorrência que encontramos:
Que nos daria o mesmo resultado: