Python

Lijstbegrippen in Python List

Lijstbegrippen in Python List
Lijstbegrippen worden vaak gebruikt in Python om instructies van één regel te schrijven die een nieuwe lijst of woordenboek maken door over een itereerbaar object te lopen. Dit artikel legt uit hoe je lijstbegrippen in Python kunt gebruiken, te beginnen met een basisuitleg over hoe for-loops werken in Python.

For Loop in Python

Een for-lus-instructie in Python itereert opeenvolgend over leden van een object, lijst, string enz. In vergelijking met andere programmeertalen is de syntaxis veel schoner en vereist het niet handmatig definiëren van iteratiestappen en het starten van iteratie. Hoewel er manieren zijn om het gedrag hetzelfde te maken als andere programmeertalen (wordt niet behandeld in dit artikel). Je kunt ook enige controle uitoefenen over for-loops door statements als continue, break, pass etc pass te gebruiken. Hieronder staat een eenvoudig voorbeeld van een for-lus in Python:

voor x binnen bereik (10):
afdrukken(x)

De for-lus hierboven drukt tien getallen af, beginnend bij 0 en eindigend op 9.

Lijstbegrippen

Lijstbegrip is niets anders dan een verkorte / beknopte manier om meerregelige for-loops in een one-liner-statement te schrijven. Het onderstaande voorbeeld van lijstbegrip maakt een nieuwe lijst als [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] door alle waarden van "x" erin op te nemen.

getallen = [x voor x in bereik (10)]
afdrukken (nummers)

Merk op dat het begrip van een lijst altijd een nieuwe lijst maakt en de originele iterables die in de uitdrukking worden gebruikt niet wijzigt. Een typische uitdrukking voor het begrip van een lijst moet een 'for'-clausule hebben en kan worden gevolgd door voorwaardelijke statements 'if' en 'else'. Zonder lijstbegrip te gebruiken, wordt het bovenstaande voorbeeld op de volgende manier geschreven:

getallen = []
voor x binnen bereik (10):
nummers.toevoegen(x)
afdrukken (nummers)

Prestaties en leesbaarheid

Lijstbegrippen zijn sneller dan for-loops. Tenzij u echter honderdduizenden items herhaalt, zult u geen grote prestatieverbeteringen opmerken. Hoewel lijstbegrip een beknopte manier biedt om for-loops te schrijven, kunnen complexe uitdrukkingen leiden tot slechte leesbaarheid van code en meer breedsprakigheid. Het is belangrijk om de code leesbaar te houden, tenzij het bereiken van maximale prestaties een absolute noodzaak is voor uw programma.

Voorbeeld: Syntaxis voor lijstbegrippen gebruiken met woordenboeken en sets

Een python-woordenboek is een verzameling elementen die zijn gedefinieerd in sleutel-waardeparen, terwijl een set een verzameling unieke waarden is waarbij duplicaten niet zijn toegestaan. Lijstbegrippen kunnen ook worden gebruikt met Python-woordenboeken en -sets. De syntaxis verschilt enigszins, in plaats van de uitdrukking in vierkante haken te plaatsen, moet u nu accolades gebruiken. Je krijgt ook een nieuw woordenboek / set-object in plaats van een nieuwe lijst.

data = "city": "new york", "name": "john doe"
formatted_data = k: v.titel() voor k,v in data.items()
afdrukken (formatted_data)

Het bovenstaande voorbeeld converteert tekenreekswaarden naar hoofdletters en creëert een nieuw woordenboek met de naam "formatted_data", waarvan de uitvoer zal zijn: 'city': 'New York', 'name': 'John Doe'. U kunt het woordenboek ook wijzigen / ter plaatse instellen door de bestaande woordenboekvariabele aan de linkerkant op te geven.

data = "city": "new york", "name": "john doe"
data = k: v.titel() voor k,v in data.items()
afdrukken (gegevens)

Zonder woordenboekbegrippen te gebruiken, zou de code er als volgt uitzien:

data = "city": "new york", "name": "john doe"
formatted_data =
voor k, v in gegevens.artikelen():
formatted_data[k] = v.titel()
afdrukken (formatted_data)

Aangezien er geen sleutel-waardeparen in sets zijn, kan een setbegrip op dezelfde manier worden gedefinieerd als een lijstbegrip. Het enige verschil is het gebruik van accolades.

Voorbeeld: Meerdere for-lussen in een lijstbegrip

Het hierboven genoemde voorbeeld van het lijstbegrip is eenvoudig en gebruikt een enkele "voor" -instructie. Hieronder ziet u een voorbeeld dat meerdere for-lussen en een voorwaardelijke "if"-instructie gebruikt.

bijvoeglijke naamwoorden = ["Disco", "Eoan", "Focal", "Artful"]
dieren = ["Dingo", "Hermelijn", "Fossa", "Bever"]
codenamen = [x + " " + y voor x in bijvoeglijke naamwoorden voor y in dieren als y.begintmet(x[0])]
afdrukken (codenamen)

De code toont ['Disco Dingo', 'Eoan Ermine', 'Focal Fossa'] als uitvoer. De twee for-lussen gaan over "adjectieven" en "dieren" lijsten en hun leden worden samengevoegd met behulp van een spatie, alleen als de eerste letter van beide woorden hetzelfde is. Zonder lijstbegrippen te gebruiken, zou de code er als volgt uitzien:

bijvoeglijke naamwoorden = ["Disco", "Eoan", "Focal", "Artful"]
dieren = ["Dingo", "Hermelijn", "Fossa", "Bever"]
codenamen = []
voor x in bijvoeglijke naamwoorden:
voor y in dieren:
als je.begintmet(x[0]):
codenamen.toevoegen(x + " " + y)
afdrukken (codenamen)

Voorbeeld: Lijstbegrip met if-else-clausule

Het onderstaande voorbeeld toont het gebruik van if en else-statements in lijstbegrippen.

aantal_lijst = [1, 2, 3, 4]
andere_lijst = [5, 6, 7, 8]
resultaat = [True  if (x + y) % 2 == 0 else False voor x in number_list voor y in other_list]
afdrukken (resultaat)

Tijdens het doorlopen van twee lijsten controleert het bovenstaande lijstbegrip of de som van het paar elementen even is of niet. Als u de bovenstaande code uitvoert, ziet u [True, False, True, False, False, True, False, True, True, False, True, False, False, True, False, True] als uitvoer. Zonder lijstbegrip te gebruiken, zou de code er als volgt uitzien:

aantal_lijst = [1, 2, 3, 4]
andere_lijst = [5, 6, 7, 8]
resultaat = []
voor x in nummer_lijst:
voor y in een andere_lijst:
als (x + y) % 2 == 0:
resultaat.toevoegen (waar)
anders:
resultaat.toevoegen (onwaar)
afdrukken (resultaat)

Conclusie

Lijstbegrippen bieden een leuke manier om duidelijke en beknopte loop-instructies te schrijven. Ze kunnen echter snel complex en moeilijk te begrijpen worden als meerdere lussen en voorwaardelijke instructies worden gebruikt. Uiteindelijk komt het op het comfortniveau van een programmeur, maar over het algemeen is het een goed idee om expliciete, leesbare en gemakkelijk te debuggen code te schrijven in plaats van overdreven steno te gebruiken.

Cursor springt of beweegt willekeurig tijdens het typen in Windows 10
Als u merkt dat uw muiscursor vanzelf springt of beweegt, automatisch, willekeurig tijdens het typen op een Windows-laptop of -computer, dan kunnen en...
De scrollrichting van de muis en touchpads omkeren in Windows 10
Muis en Touchpads maken computergebruik niet alleen eenvoudig, maar ook efficiënter en minder tijdrovend. We kunnen ons een leven zonder deze apparate...
Hoe de muisaanwijzer en cursorgrootte, kleur en schema op Windows 10 te veranderen
De muisaanwijzer en cursor in Windows 10 zijn zeer belangrijke aspecten van het besturingssysteem. Dit geldt ook voor andere besturingssystemen, dus i...