Introductie
Lijsten zijn op verschillende manieren nuttig in vergelijking met andere datatypes, omdat ze zo veelzijdig zijn. In dit artikel bekijken we een van de meest voorkomende bewerkingen met lijsten – het vinden van de index van een element.
We bekijken verschillende scenario’s voor het vinden van een element, d.w.z. het vinden van de eerste, laatste en alle occurrences van een element. En ook wat er gebeurt als het element dat we zoeken niet bestaat.
Gebruik van de index() functie
De element
parameter stelt natuurlijk het element voor dat we zoeken. De parameters start
en end
zijn optioneel en geven het bereik van de indices aan waarin we zoeken naar de element
.
De standaardwaarde voor start
is 0
(zoeken vanaf het begin), en de standaardwaarde voor end
is het aantal elementen in de lijst (zoeken tot het einde van de lijst).
De functie geeft de eerste positie van de element
in de lijst die het kon vinden, ongeacht hoeveel gelijke elementen er na het eerste voorkomen zijn.
De eerste keer dat een element voorkomt vinden
Met de functie index()
zonder waarden in te stellen voor start
en end
krijgen we de eerste verschijning van de element
die we zoeken:
my_list = first_occurrence = my_list.index('b')print("First occurrence of 'b' in the list: ", first_occurrence)
Wat ons de verwachte uitvoer zou geven:
First occurrence of 'b' in the list: 1
Alle voorkomens van een element vinden
Om alle voorkomens van een element te vinden, kunnen we de optionele parameter start
gebruiken, zodat we alleen in bepaalde segmenten van de lijst zoeken.
Zeg bijvoorbeeld dat we het eerste voorkomen van een element op index 3
zouden vinden. Om het volgende element te vinden, moeten we verder zoeken naar het eerste voorkomen van dat element na index 3
. We herhalen dit proces, waarbij we de plaats waar we zoeken veranderen, zolang we nieuwe voorkomens van het element vinden:
Het uitvoeren van deze code zou ons het volgende opleveren:
The element was found at:
We moesten hier een try
blok gebruiken, omdat de index()
functie een fout geeft als het de gespecificeerde element
niet kan vinden in het gegeven bereik. Dit is misschien ongebruikelijk voor ontwikkelaars die meer gewend zijn aan andere talen, omdat functies als deze meestal -1
null
teruggeven als het element niet kan worden gevonden.
In Python moeten we echter voorzichtig zijn en een try
blok gebruiken als we deze functie gebruiken.
Een andere, meer nette manier om ditzelfde te doen zou zijn door list comprehension te gebruiken en de index()
functie helemaal te negeren:
Wat ons dezelfde output zou geven als voorheen. Deze aanpak heeft als bijkomend voordeel dat het try
blok niet wordt gebruikt.
Het laatste element in de lijst vinden
Als je het laatste element in de lijst wilt vinden, zijn er twee manieren om dit te doen met de index()
functie:
- Reverseer de lijst en zoek naar het eerste voorkomen in de omgekeerde lijst
- Ga door alle voorkomen van het element, en houd alleen het laatste voorkomen bij
Met betrekking tot de eerste benadering, als we het eerste voorkomen van de element
in een omgekeerde lijst wisten, zouden we de positie van het laatste voorkomen in de oorspronkelijke kunnen vinden. Meer specifiek kunnen we dit doen door reversed_list_index - 1
af te trekken van de lengte van de oorspronkelijke lijst:
Wat ons de gewenste uitvoer zou geven:
6
Wat de tweede benadering betreft, kunnen we de code die we hebben gebruikt om alle occurrences te vinden, aanpassen en alleen de laatst gevonden occurrence bijhouden:
Wat ons dezelfde output zou geven: