Python - Lijstbegrip
Lijst begrip
Lijstbegrip biedt een kortere syntaxis wanneer u een nieuwe lijst wilt maken op basis van de waarden van een bestaande lijst.
Voorbeeld:
Op basis van een lijst met fruit wilt u een nieuwe lijst met alleen de vruchten met de letter "a" in de naam.
Zonder lijstbegrip moet je een for
verklaring schrijven met een voorwaardelijke test erin:
Voorbeeld
fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
newlist = []
for x in fruits:
if "a" in x:
newlist.append(x)
print(newlist)
Met lijstbegrip kun je dat allemaal doen met slechts één regel code:
Voorbeeld
fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
newlist = [x
for x in fruits if "a" in x]
print(newlist)
de syntaxis
newlist = [expression for item in iterable if condition == True]
De retourwaarde is een nieuwe lijst, waarbij de oude lijst ongewijzigd blijft.
Voorwaarde
De voorwaarde is als een filter dat alleen de items accepteert die een waarde hebben tot
True
.
Voorbeeld
Accepteer alleen items die niet "appel" zijn:
newlist = [x for x in fruits if x != "apple"]
De conditie
if x != "apple"
zal terugkeren True
voor alle andere elementen dan "appel", waardoor de nieuwe lijst alle vruchten bevat behalve "appel".
De voorwaarde is optioneel en kan worden weggelaten:
Voorbeeld
Zonder if
verklaring:
newlist = [x for x in fruits]
itereerbaar
De iterabele kan elk willekeurig object zijn, zoals een lijst, tuple, set enz.
Voorbeeld
U kunt de range()
functie gebruiken om een iterabel te maken:
newlist = [x for x in range(10)]
Zelfde voorbeeld, maar met een voorwaarde:
Voorbeeld
Accepteer alleen getallen lager dan 5:
newlist = [x for x in range(10) if x < 5]
Uitdrukking
De expressie is het huidige item in de iteratie, maar het is ook de uitkomst, die u kunt manipuleren voordat het als een lijstitem in de nieuwe lijst eindigt:
Voorbeeld
Stel de waarden in de nieuwe lijst in op hoofdletters:
newlist = [x.upper()
for x in fruits]
U kunt de uitkomst instellen op wat u maar wilt:
Voorbeeld
Zet alle waarden in de nieuwe lijst op 'hallo':
newlist = ['hello' for x in fruits]
De expressie kan ook voorwaarden bevatten, niet zoals een filter, maar als een manier om de uitkomst te manipuleren:
Voorbeeld
Retourneer "oranje" in plaats van "banaan":
newlist = [x if x != "banana" else "orange"
for x in fruits]
De uitdrukking in het bovenstaande voorbeeld zegt:
"Retourneer het artikel als het geen banaan is, als het banaan is, retourneer oranje".