Hoe Python List-begrippen te gebruiken (en wanneer niet om ze te gebruiken)

Hoe Python List-begrippen te gebruiken (en wanneer niet om ze te gebruiken) / Programming

Je hebt misschien gehoord van Pythons begrip van de lijst. Misschien is het zelfs iets dat je hebt gebruikt zonder echt te begrijpen. Dit is het moment om het te leren, want we bespreken alles wat je moet weten over het begrip van woorden in Python.

Voordat je aan de slag gaat, is het de moeite waard om jezelf te verfrissen over hoe arrays en lijsten werken in Python. Hoe arrays en lijsten werken in Python Hoe arrays en lijsten werken in Python-arrays en lijsten zijn enkele van de nuttigste datastructuren in programmeren - hoewel er maar weinig mensen gebruik van maken naar hun volledige potentieel. Meer lezen en Python-woordenboeken gebruiken Python-woordenboek: hoe u het kunt gebruiken om beter te schrijven Python-woordenboek: hoe u het beter kunt schrijven Code Denk aan een Python-woordenboek als ongeordende sets sleutel / waarde-paren. In dit artikel introduceren we u om met hen samen te werken en deze te gebruiken om uw Python-code te verbeteren. Lees verder .

Wat is Python Lijst Begrip?

Lijstbegrip klinkt complex maar dat is het echt niet. In Python is het eenvoudig een snelle manier om een ​​lijst te filteren of te verfijnen op basis van een aantal criteria.

Het bespaart je dat je meerdere regels code moet schrijven (vooral als je al in een lus zit), en het houdt de leesbaarheid van je code netjes.

Wees echter voorzichtig, want het begrijpen van een lijst is niet altijd het antwoord. Het is gemakkelijk om je te laten meeslepen en complexe begrippen te schrijven die moeilijk te lezen zijn. Soms is het schrijven van meer code beter, vooral als dit de leesbaarheid bevordert. Blijf bij eenvoudige taken en bewaar code voor één enkele verantwoordelijkheid.

Hoe List begrijpt gebruik in Python

Notitie: Deze voorbeelden gebruiken allemaal Python 3.6. Als je niet zeker bent van de verschillen tussen Python 3 en Python 2, lees dan onze Veelgestelde vragen over Python De meestgestelde vragen over Python-programmeren De meestgestelde vragen over Python-programmering In dit artikel zullen we je helpen alles wat u moet weten over Python als een beginner. Lees meer, waar we deze vraag behandelen en meer.

Overweeg dit stukje code dat een array kopieert en van elke letter in die array een hoofdletter maakt. Dit gebeurt door elk item in de array door te lussen:

letters = ['a', 'b', 'c', 'd'] print (letters) upper_letters = [] voor letters in letters: result = letter.upper () upper_letters.append (result) print (upper_letters)

Nu is hier dezelfde exacte logica, behalve gedaan in een enkele regel code met behulp van een elementaire Python-lijstbegrip:

letters = ['a', 'b', 'c', 'd'] print (letters) upper_letters = [x.upper () voor x in letters] print (upper_letters) 

Zoals u kunt zien, is het resultaat precies hetzelfde, maar het proces omvat aanzienlijk meer code zonder begrip van de lijst.

Laten we dit eenvoudige voorbeeld naar beneden halen.

In dit voorbeeld wordt een lijst gemaakt met de naam brieven. Hiermee worden de kleine letters opgeslagen “een”, “b”, “c”, en “d”. Stel dat u wilt dat al deze lijstelementen hoofdletters zijn? Nou, zonder begrip van de lijst, moet je een nieuwe lijst maken om het resultaat op te slaan (genaamd upper_letters), loop over elk element in de brieven lijst, converteer elke letter (en sla deze op resultaat-optioneel maar goede praktijk), en voeg vervolgens de hoofdletter toe aan de nieuwe lijst. Wat een hoop werk!

Het lijstbegrip is hier bijna exact gelijk aan het loop-alternatief. Het zegt effectief “voor elke letter in de lijst met letters, converteer ze naar hoofdletters en retourneer het resultaat als een nieuwe lijst.”

Lijstbegrip werkt alleen op lijsten en moet een nieuwe lijst retourneren. Laten we dieper graven.

Er zijn drie delen in een lijstbegrip (we behandelen het derde deel hieronder). Lijstbegrippen moeten beginnen en eindigen met vierkante haken ([ en ]). Dit is de manier waarop het is ontworpen en laat Python weten dat je met een lijst werkt.

Binnen de vierkante haken moet je beginnen met het resultaat. Dit is wat u met elk lijstelement wilt doen.

In het bovenstaande voorbeeld converteert de volgende code elk element (waarnaar wordt verwezen door de naam van de variabele X) naar hoofdletters met behulp van de bovenste() methode, die deel uitmaakt van de kernbibliotheek van Python:

[x.upper () # wordt niet uitgevoerd, slechts de helft van het bevattingsvermogen op dit punt

Vervolgens moet u Python vertellen aan welke lijst moet worden gewerkt en moet u elk afzonderlijk element aan een variabele toewijzen. Dit is precies hetzelfde als de for-lus in het langdradige voorbeeld:

voor x in letters

Elke keer dat de lus over de lijst gaat, is de waarde van X zal veranderen naar wat het huidige element is. Het begint als “een”, en dan “b”, enzovoorts.

Als je alles bij elkaar optelt (en toewijs het aan een variabele genaamd upper_letters), je bent klaar:

upper_letters = [x.upper () voor x in letters]

Nu, upper_letters zal een lijst met hoofdletters bevatten, beginnend bij “EEN”, en dan “B” enzovoorts.

Het derde deel van lijstbegrip in Python

Zoals we hierboven vermeldden, is er een derde deel om het begrip te begrijpen.

Zodra u de twee bovenstaande stappen hebt uitgevoerd, kunt u een optionele voorwaarde opnemen. Dit is hetzelfde als een als verklaring om te zeggen “maak een nieuwe lijst op basis van deze oude lijst, maar voeg alleen elementen toe die aan mijn criteria voldoen”.

Hier is hoe het eruit ziet:

leeftijden = [1, 34, 5, 7, 3, 57, 356] print (leeftijden) old_ages = [x voor x in leeftijden als x> 10] print (oude_dagen)

Dit voorbeeld gebruikt een nieuwe lijst met de naam leeftijden. De old_ages lijst wordt samengesteld met behulp van een lijstbegrip. De als voorwaarde aan het einde betekent dat alleen lijstelementen die aan de criteria voldoen, in de nieuwe lijst worden ingevoegd. In dit voorbeeld zijn alle leeftijden groter dan tien toegestaan.

Wanneer de begrippen Pythonlijst niet gebruiken

Lijstbegrip is verbazingwekkend als je het eenmaal onder de knie hebt, maar het is niet nuttig in elke omstandigheid. U moet het waarschijnlijk niet gebruiken wanneer u meer dan één voorwaarde nodig heeft:

old_ages = [x voor x in leeftijden als x> 10 en x < 100 and x is not None]

Deze code werkt, maar het begint lang en verwarrend te worden. Evenzo werkt iets anders dan een eenvoudige functieaanroep mogelijk niet. In dit voorbeeld krijgt u een foutmelding:

letters = ['a', 'b', 'c', 'd', 2] print (letters) upper_letters = [x.upper () voor x in letters] print (upper_letters)

Dit is een perfect geldige code, maar omdat u een nummer niet in hoofdletters kunt krijgen, werkt het niet. Dit is één geval wanneer de langere lus eigenlijk de voorkeur verdient, omdat je een aantal uitzonderingsafhandeling kunt doen:

letters = ['a', 'b', 'c', 'd', 1] print (letters) upper_letters = [] voor letters in letters: try: result = letter.upper () upper_letters.append (resultaat) behalve AttributeError: pass # do nothing print (upper_letters)

Begin met het gebruik van Python List-begrippen

Nu je weet hoe gemakkelijk listbegrip in Python is, is er geen reden om het niet te gebruiken. Vergeet niet om het eenvoudig te houden en de leesbaarheid boven al het andere te houden.

Misschien bestuurt u een Arduino met Python Hoe programmeert en bestuurt u een Arduino met Python Hoe u een Arduino programmeert en bestuurt Met Python Helaas is het onmogelijk om een ​​Arduino rechtstreeks in Python te programmeren, maar u kunt het via USB besturen met een Python programma. Hier is hoe. Lees meer, of wat dacht u van een DIY Python-netwerkbeveiligingscamera DIY Pan en Tilt Netwerkbeveiligingscamera met Raspberry Pi DIY Pan en Tilt Netwerkbeveiligingscamera met Raspberry Pi Leer hoe u een op afstand te bekijken beveiligingscamera met pan en tilt kunt maken met een Raspberry Pi. Dit project kan 's morgens worden voltooid met alleen de eenvoudigste onderdelen. Lees verder ?

Ontdek meer over: Codeerhandleiding, Python.