Beste praktijken voor de for-lus in Python
Dit artikel legt de beste praktijken voor de for-lus in Python uit.
YouTube Video
Best practices voor Python for-lus
In Python is de for-lus een krachtig hulpmiddel om door een verzameling van meerdere elementen te itereren. Hier verdiepen we ons in de standaardgebruik van de for-lus in Python en onderzoeken we beste praktijken. We zullen praktische codevoorbeelden, veelvoorkomende problemen en technieken voor het behouden van code-efficiëntie opnemen.
Basis for-lus
De basis for-lus in Python is relatief eenvoudig. Bijvoorbeeld, je kunt de elementen van een lijst een voor een weergeven zoals hieronder weergegeven:.
1fruits = ["apple", "banana", "cherry"]
2for fruit in fruits:
3 print(fruit)- De bovenstaande code geeft de elementen "apple," "banana," en "cherry" in volgorde weer.
Iteratiesyntaxis
Dit is een relatief eenvoudige voorbeeldcode, maar een for-lus kan meer complexe scenario's uitvoeren. Je kunt bijvoorbeeld enumerate of zip gebruiken om gelijktijdig over meerdere lijsten te itereren.
Enumerate gebruiken
1fruits = ["apple", "banana", "cherry"]
2for index, fruit in enumerate(fruits):
3 print(f"{index}: {fruit}")- Met
enumeratekun je tegelijkertijd zowel de index als het element ophalen.
Zip gebruiken
1names = ["Alice", "Bob", "Charlie"]
2ages = [25, 30, 35]
3for name, age in zip(names, ages):
4 print(f"{name} is {age} years old.")- Met
zipkun je gelijktijdig over meerdere lijsten itereren.
Lijsteigenschappen en omgaan met randgevallen
Lijsten direct gebruiken is handig, maar bij het werken met grote gegevens is het belangrijk om duidelijke en efficiënte syntax te gebruiken.
Lijstomprehensie
Als u bijvoorbeeld dubbele elementen in een lijst wilt vermijden, kunt u een set gebruiken om herhaalde uitvoer te voorkomen.
1items = ["apple", "banana", "apple", "cherry"]
2for item in set(items):
3 print(item)- In dit voorbeeld wordt een
setgebruikt om dubbele elementen te verwerken.
Itereren over woordenboeken
Bij het itereren over woordenboeken gebruik je de items()-methode om toegang te krijgen tot sleutels en waarden.
1capitals = {"USA": "Washington, D.C.", "France": "Paris", "Japan": "Tokyo"}
2for country, capital in capitals.items():
3 print(f"The capital of {country} is {capital}.")- Deze code loopt over de sleutels en waarden van een woordenboek met landen en hun hoofdstad, en print deze.
Lijstcomprehensies gebruiken
Het gebruik van lijstcomprehensies kan de code compacter en leesbaarder maken. Dit is effectief bij het maken van nieuwe lijsten met for-lussen.
1squares = [x**2 for x in range(10)]
2print(squares)- Deze code gebruikt een list comprehension om de kwadraten van gehele getallen van 0 tot 9 te berekenen en slaat de resultaten op in een lijst.
Conditionele lussen
Door voorwaarden toe te voegen, kun je binnen de lus filters of andere bewerkingen uitvoeren wanneer specifieke acties nodig zijn.
1numbers = [1, 2, 3, 4, 5]
2even_squares = [x**2 for x in numbers if x % 2 == 0]
3print(even_squares)- Deze code gebruikt een list comprehension om alleen de even getallen uit de lijst
numberste kwadrateren en op te slaan in een nieuwe lijst.
Else gebruiken
In Python kun je een else-clausule opnemen in een lus. Dit wordt alleen uitgevoerd als de lus op natuurlijke wijze eindigt, zonder onderbroken te worden door break.
1numbers = [1, 2, 3, 4, 5]
2search_for = 6
3
4for number in numbers:
5 if number == search_for:
6 print("Number found!")
7 break
8else:
9 print("Number not found.")- In deze code, omdat de waarde
6die aansearch_foris toegekend niet in de lijst voorkomt, loopt de lus tot het einde en toont dan het berichtNummer niet gevonden.
Wees voorzichtig bij het aanpassen van een lijst binnen een lus.
Het aanpassen van een bestaande lijst in een for-lus kan leiden tot onbedoeld gedrag of onvoorspelbare resultaten. Dergelijke bewerkingen moeten over het algemeen worden vermeden.
Worstcasescenario
1numbers = [1, 2, 3, 4]
2for i in numbers:
3 numbers.append(i * 2) # Modify the list while iterating
4 if len(numbers) > 10:
5 break # Avoid infinite loop- Dit kan onbedoelde resultaten veroorzaken en is geen veilige code. In plaats daarvan wordt aanbevolen om een nieuwe lijst te maken of een op index gebaseerde lus te gebruiken om stabiele code te behouden.
Doelgegevens kiezen
Door geschikte datastructuren te gebruiken tijdens het uitvoeren van de for-lus, kun je de efficiëntie verbeteren. Het gebruik van generators voor grote gegevensomzettingen of itertools voor stroomlijning is effectief.
Generator
1def generate_numbers():
2 for i in range(5):
3 yield i
4
5for number in generate_numbers():
6 print(number)- Door dergelijke generators te gebruiken, kun je gegevens op een stroomgerichte manier verwerken in plaats van alles in één keer te laden.
itertools
1import itertools
2
3# Generate numbers starting from 0 infinitely (limited using takewhile)
4counter = itertools.count()
5
6# Output numbers from 0 to 4
7for number in itertools.takewhile(lambda x: x < 5, counter):
8 print(number)- Door gebruik te maken van
itertoolskun je efficiënt data verwerken, zoals oneindige streams, terwijl je controle behoudt. Zoals hierboven getoond, kun je bijvoorbeeld een reeks waarden genereren metcount()en waarden ophalen zolang aan een voorwaarde wordt voldaan mettakewhile(). Dit maakt flexibele en leesbare streamverwerking mogelijk zonder expliciet beëindigingsvoorwaarden te hoeven specificeren.
Conclusie
De for-lus van Python kan een breed scala aan taken uitvoeren, van eenvoudige iteraties tot complexe transformaties. Onjuist gebruik kan echter leiden tot onnodige complexiteit en verminderde efficiëntie. Door deze best practices te volgen, kun je efficiënte code schrijven en tegelijkertijd de onderhoudbaarheid en leesbaarheid verbeteren.
Je kunt het bovenstaande artikel volgen met Visual Studio Code op ons YouTube-kanaal. Bekijk ook het YouTube-kanaal.