1. Programming Python Lambda-functies gebruiken in Python

Door Alan Shovic, John Shovic

Python ondersteunt het concept van anonieme functies, ook wel lambda-functies genoemd. Het anonieme deel van de naam is gebaseerd op het feit dat de functie geen naam hoeft te hebben (maar er een kan hebben als u dat wilt). Het lambda-gedeelte is gebaseerd op het gebruik van het trefwoord lambda om ze in Python te definiëren. Lambda is ook de 11e letter van het Griekse alfabet.

Maar de belangrijkste reden dat de naam in Python wordt gebruikt, is omdat de term lambda wordt gebruikt om anonieme functies in calculus te beschrijven. Nu we dat hebben opgehelderd, kunt u deze info gebruiken om een ​​boeiend gesprek op kantoorparty's op gang te brengen.

De minimale syntaxis voor het definiëren van een lambda-expressie (zonder naam) met Python is:

Lambda-argumenten: uitdrukking

Bij gebruik:

  • Vervang argumenten door gegevens die in de uitdrukking worden doorgegeven. Vervang uitdrukking door een uitdrukking (formule) die definieert wat u wilt dat de lambda teruggeeft.

Een vrij algemeen voorbeeld van het gebruik van die syntaxis is wanneer u tekstreeksen probeert te sorteren, waarbij sommige namen beginnen met hoofdletters en sommige beginnen met kleine letters, zoals in deze namen:

Adams, Ma, diMeola, Zandusky

Stel dat u de volgende code schrijft om de namen in een lijst te plaatsen, deze te sorteren en vervolgens de lijst als volgt af te drukken:

names = ['Adams', 'Ma', 'diMeola', 'Zandusky']
names.sort ()
afdrukken (namen)

Die output hiervan is:

['Adams', 'Ma', 'Zandusky', 'diMeola']

Als DiMeola na Zandusky komt, lijkt dit voor sommige beginners verkeerd. Maar computers zien dingen niet altijd zoals wij. (Eigenlijk 'zien' ze niets omdat ze geen ogen of hersens hebben ... maar dat is naast het punt.) De reden dat DiMeola achter Zandusky aan komt, is omdat de soort is gebaseerd op ASCII, een systeem waarin elke teken wordt weergegeven door een nummer.

Alle kleine letters hebben cijfers die groter zijn dan hoofdletters. Dus bij het sorteren komen alle woorden die beginnen met kleine letters na de woorden die beginnen met een hoofdletter. Als er niets anders is, rechtvaardigt het tenminste een kleine hmm.

Om je hierbij te helpen, kun je met de methode python sort () een sleutel = expressie tussen haakjes opnemen, waar je kunt zien hoe je moet sorteren. De syntaxis is:

.sort (sleutel = transformeren)

Het transformatiedeel is een variatie op de gegevens die worden gesorteerd. Als je geluk hebt en een van de ingebouwde functies zoals len (for length) voor je werkt, kun je dat gewoon gebruiken in plaats van transformeren, zoals hier:

names.sort (key = len)

Helaas voor ons helpt de lengte van de tekenreeks niet bij het alfabetiseren. Dus wanneer je dat uitvoert, blijkt de volgorde te zijn:

['Ma', 'Adams', 'diMeola', 'Zandusky']

De sortering gaat van de kortste reeks (die met de minste tekens) tot de langste reeks. Momenteel niet nuttig.

Je kunt key = lower of key = upper niet schrijven om de sortering op alle kleine letters of hoofdletters te baseren, omdat kleine en hoofdletters geen ingebouwde functies zijn (wat je vrij snel kunt verifiëren door python 3.7 ingebouwd te googlen functies).

In plaats van een ingebouwde functie kunt u een aangepaste functie gebruiken die u zelf definieert met def. U kunt bijvoorbeeld een functie met de naam lower () maken die een tekenreeks accepteert en die tekenreeks retourneert met alle letters omgezet in kleine letters. Hier is de functie:

def lager (anystring):
"" "Converteert tekenreeks naar kleine letters" ""
retourneer anystring.lower ()

De naam lager is verzonnen en anystring is een tijdelijke aanduiding voor elke string die je er in de toekomst aan geeft. De return anystring.lower () retourneert die tekenreeks die is geconverteerd naar alle kleine letters met de methode .lower () van het str (string) -object. (Lees meer over Python-stringmethoden voor meer informatie.)

U kunt key = lower niet gebruiken tussen de haakjes sort (), omdat lower () geen ingebouwde functie is. Het is een methode ... niet hetzelfde. Nogal vervelend met al deze modewoorden.

Stel dat u deze functie in een Jupyter-cel of .py-bestand schrijft. Vervolgens roept u de functie op met zoiets als afdrukken (kleine letters ('Zandusky')). Wat je als output krijgt, is die string omgezet in kleine letters, zoals je hieronder ziet.

aangepaste functie lager () in Python

Oké, dus nu heb je een aangepaste functie om elke string naar alle kleine letters te converteren. Hoe gebruik je dat als een sorteersleutel? Eenvoudig, gebruik toets = transformeer hetzelfde als voorheen, maar vervang transform door uw aangepaste functienaam. De functie wordt kleine letters genoemd, dus u zou .sort (key = kleine letters van) gebruiken, zoals hieronder wordt getoond:

def kleine letters (anystring):
"" "Converteert tekenreeks naar kleine letters" ""
retourneer anystring.lower ()
 
names = ['Adams', 'Ma', 'diMeola', 'Zandusky']
names.sort (key = lowercaseof)

Als u deze code uitvoert om de lijst met namen weer te geven, worden ze in de juiste volgorde geplaatst, omdat de sortering is gebaseerd op tekenreeksen die allemaal in kleine letters zijn. De uitvoer is hetzelfde als voorheen, omdat alleen het sorteren, dat achter de schermen plaatsvond, kleine letters gebruikte. De oorspronkelijke gegevens bevinden zich nog steeds in de oorspronkelijke hoofdletters en kleine letters.

'Adams', 'diMeola', 'Ma', 'Zandusky'

Als je na het lezen van dit alles nog steeds wakker en bewust bent, denk je misschien: 'Oké, je hebt het sorteerprobleem opgelost. Maar ik dacht dat we het hier over lambdafuncties hadden. Waar is de lambda-functie? ”Er is nog geen lambda-functie.

Maar dit is een perfect voorbeeld van waar u een lambdafunctie kunt gebruiken, omdat de Python-functie die u aanroept, kleine letters (), al het werk doet met slechts één regel code: return anystring.lower ().

Wanneer uw functie zijn ding kan doen met een eenvoudige expressie van één regel, kunt u de def en de functienaam overslaan en gewoon deze syntaxis gebruiken:

lambda-parameters: expressie

Vervang parameters door een of meer parameternamen die u zelf maakt (de namen tussen haakjes na def en de functienaam in een normale functie). Vervang uitdrukking door wat u wilt dat de functie retourneert zonder het woord return. Dus in dit voorbeeld zou de sleutel, met behulp van een lambda-expressie, zijn:

lambda anystring: anystring.lower ()

Nu kun je zien waarom het een anonieme functie is. De hele eerste regel met functienaam kleine letters van () is verwijderd. Het voordeel van het gebruik van de lambda-expressie is dus dat je helemaal geen externe aangepaste functie nodig hebt. U hebt alleen de parameter nodig, gevolgd door een dubbele punt en een uitdrukking die aangeeft wat deze moet retourneren.

De onderstaande afbeelding toont de volledige code en het resultaat van het uitvoeren ervan. U krijgt de juiste sorteervolgorde zonder dat u een externe klantfunctie zoals kleine letters () nodig hebt. Je gebruikt gewoon anystring: anystring.lower () (na het woord lambda) als de sorteersleutel.

Python lambda-expressie

Laten we er ook aan toevoegen dat anystring een langere parameternaam is dan de meeste Pythonistas zouden gebruiken. Python-mensen zijn dol op korte namen, zelfs namen met één letter. U kunt bijvoorbeeld elke string vervangen door s (of een andere letter), zoals hieronder, en de code werkt precies hetzelfde:

names = ['Adams', 'Ma', 'diMeola', 'Zandusky']
names.sort (key = lambda s: s.lower ())
afdrukken (namen)

Lang geleden, aan het begin van deze tirade, werd gezegd dat een lambda-functie niet anoniem hoeft te zijn. U kunt ze namen geven en ze op dezelfde manier gebruiken als andere functies.

Hier is bijvoorbeeld een lambdafunctie met de naam valuta die elk getal gebruikt en een tekenreeks in valutanotatie retourneert (dat wil zeggen, met een leidend dollarteken, komma's tussen duizenden en twee cijfers voor penningen):

currency = lambda n: f "$ {n:,. 2f}"

Hier is een genoemd percentage dat elk getal dat u ernaar verzendt met 100 vermenigvuldigt en het aan het einde met twee een procentteken toont:

percent = lambda n: f "{n: .2%}"

De volgende afbeelding toont voorbeelden van beide functies die boven aan een Jupyter-cel zijn gedefinieerd. Vervolgens roepen een paar afdrukinstructies de functies bij naam op en geven er enkele voorbeeldgegevens aan. Bij elke print () -instructies wordt het nummer in het gewenste formaat weergegeven.

Getallen voor Python-opmaak

De reden dat u deze als lambdas met één regel kunt definiëren, is omdat u al het werk op één regel kunt doen, f "$ {n:,. 2f}" voor de eerste en f "{n: .2%}" voor de tweede. Maar alleen omdat je het op die manier kunt doen, wil nog niet zeggen dat je moet. U kunt ook de volgende normale functies gebruiken:

# Nummer weergeven in valuta-indeling.
def valuta (n):
retourneer f "$ {n:,. 2f}"
 
def procent (n):
# Nummer in procentformaat weergeven.
rendement f "{n: .2%}"

Met deze langere syntaxis kunt u ook meer informatie doorgeven. U kunt bijvoorbeeld standaard een rechts uitgelijnde indeling binnen een bepaalde breedte (bijvoorbeeld 15 tekens) gebruiken, zodat alle nummers rechts uitgelijnd kwamen met dezelfde breedte. De afbeelding toont deze variatie op de twee functies.

Python-opmaakfunctie vaste breedte

In de bovenstaande afbeelding is de tweede parameter optioneel en standaard ingesteld op 15 als deze wordt weggelaten. Dus als je het zo noemt:

afdrukken (valuta (9999))

... krijg je $ 9.999,00 vulling met links voldoende spaties om het 15 tekens breed te maken. Als je het in plaats daarvan zo noemt:

afdrukken (valuta (9999,20)

... krijg je nog steeds $ 9.999,00 maar opgevuld met voldoende spaties aan de linkerkant om het 20 tekens breed te maken.

De .ljust () die hierboven wordt gebruikt, is een ingebouwde Python-tekenreeksmethode die de linkerkant van een tekenreeks opvult met voldoende spaties om de opgegeven breedte te maken. Er is ook een methode rjust () om de rechterkant op te vullen. U kunt ook een ander teken dan een spatie opgeven. Google python 3 ljust rjust als je meer info nodig hebt.

Dus daar heb je het, de mogelijkheid om je eigen aangepaste functies in Python te maken. In het echte leven, wat je wilt doen, is elke keer dat je merkt dat je toegang moet hebben tot hetzelfde stuk code - hetzelfde stukje login - steeds opnieuw in je app, kopieer of plak dat stuk van code steeds opnieuw. Plaats in plaats daarvan al die code in een functie die u op naam kunt aanroepen.

Op die manier, als u besluit de Python-stringcode te wijzigen, hoeft u niet door uw app te zoeken om alle plaatsen te vinden die moeten worden gewijzigd. Wijzig het gewoon in de functie waar het allemaal op één plek is gedefinieerd.

  1. Programming Python Python-lijsten definiëren en gebruiken

Door Alan Shovic, John Shovic

De eenvoudigste gegevensverzameling in Python is een lijst. Een lijst is een lijst met gegevensitems, gescheiden door komma's, tussen vierkante haken. Doorgaans wijst u een naam toe aan de Python-lijst met behulp van een = -teken, net zoals u zou doen met variabelen. Als de lijst getallen bevat, gebruik dan geen aanhalingstekens eromheen. Hier is bijvoorbeeld een lijst met testscores:

scores = [88, 92, 78, 90, 98, 84]

Als de lijst tekenreeksen bevat, moeten die tekenreeksen zoals altijd tussen enkele of dubbele aanhalingstekens worden geplaatst, zoals in dit voorbeeld:

Om de inhoud van een lijst op het scherm weer te geven, kunt u deze afdrukken zoals u elke normale variabele zou afdrukken. Als u bijvoorbeeld print (studenten) uitvoert in uw code nadat u die lijst hebt gedefinieerd, wordt dit op het scherm weergegeven.

['Mark', 'Amber', 'Todd', 'Anita', 'Sandy']

Dit is misschien niet precies wat u in gedachten had. Maar maak je geen zorgen, Python biedt veel geweldige manieren om toegang te krijgen tot gegevens in lijsten en deze weer te geven zoals je wilt.

Verwijzen naar Python-lijstitems op positie

Elk item in een lijst heeft een positienummer, beginnend met nul, ook al ziet u geen nummers. U kunt naar elk item in de lijst verwijzen door het nummer te gebruiken met behulp van de naam voor de lijst, gevolgd door een nummer tussen vierkante haken. Met andere woorden, gebruik deze syntaxis:

lijstnaam [x]

Vervang lijstnaam door de naam van de lijst waartoe u toegang hebt en vervang x door het positienummer van het gewenste item. Vergeet niet dat het eerste item altijd nummer nul is, niet één. In de eerste regel hieronder definieer ik bijvoorbeeld een lijst met de naam studenten en druk ik vervolgens itemnummer nul uit die lijst af. Het resultaat, bij het uitvoeren van de code, is dat de naam Mark wordt weergegeven.
studenten = ["Mark", "Amber", "Todd", "Anita", "Sandy"]
afdruk (studenten [0])
Mark

Bij het lezen van items in de toegangslijst gebruiken professionals het woord sub vóór het nummer. Studenten [0] worden bijvoorbeeld gesproken als studenten onder nul.

Dit volgende voorbeeld toont een lijst met scores. De functie print () drukt het positienummer van de laatste score in de lijst af, wat 4 is (omdat de eerste altijd nul is).

scores = [88, 92, 78, 90, 84]
afdruk (scores [4])
84

Als u toegang probeert te krijgen tot een lijstitem dat niet bestaat, wordt de fout 'index buiten bereik' weergegeven. Het indexdeel is een verwijzing naar het nummer tussen de vierkante haken. De onderstaande afbeelding toont bijvoorbeeld een klein experiment in een Jupyter-notitieboek waarbij een lijst met scores is gemaakt en vervolgens is geprobeerd om de score [5] af te drukken.

Het is mislukt en heeft een fout gegenereerd omdat er geen scores zijn [5]. Er zijn alleen scores [0], scores [1], scores [2], scores [3] en scores [4] omdat het tellen altijd bij nul begint met de eerste op de lijst.

Python-indexbereik

Een Python-lijst doorlopen

Om toegang te krijgen tot elk item in een lijst, gebruikt u gewoon een for-lus met deze syntaxis:

voor x in lijst:

Vervang x door een variabelenaam naar keuze. Vervang lijst door de naam van de lijst. Een gemakkelijke manier om de code leesbaar te maken, is om altijd een meervoud te gebruiken voor de lijstnaam (zoals studenten, scores). Dan kunt u de enkelvoudige naam (student, score) gebruiken voor de variabelenaam. Bij deze aanpak hoeft u ook geen subscriptnummers (nummers tussen vierkante haken) te gebruiken. De volgende code drukt bijvoorbeeld elke score in de scoreslijst af:

voor score in scores:
afdruk (score)

Vergeet niet om altijd de code te laten inspringen die binnen de lus moet worden uitgevoerd. Deze afbeelding toont een completer voorbeeld waarin u het resultaat kunt zien van het uitvoeren van de code in een Jupyter-notitieblok.

Een Python-lijst doorlopen

Zien of een Python-lijst een item bevat

Als u wilt dat uw code de inhoud van een lijst controleert om te zien of deze al een item bevat, gebruikt u lijstnaam in een if-statement of een variabele toewijzing.

De code in de onderstaande afbeelding maakt bijvoorbeeld een lijst met namen. Vervolgens slaan twee variabelen de resultaten op van het zoeken in de lijst naar de namen Anita en Bob. Als u de inhoud van elke variabele afdrukt, wordt True weergegeven voor degene waar de naam (Anita) in de lijst staat. De test om te zien of Bob in de lijst staat, is onjuist.

Zien of een item in een Python-lijst staat

De lengte van een Python-lijst verkrijgen

Gebruik de functie len () (kort voor lengte) om te bepalen hoeveel items in een lijst staan. Plaats de naam van de lijst tussen haakjes. Typ bijvoorbeeld de volgende code in een Jupyter-notitieblok of Python-prompt of wat dan ook:

studenten = ["Mark", "Amber", "Todd", "Anita", "Sandy"]
afdrukken (len (studenten))

Het uitvoeren van die code produceert deze uitvoer:

5

Er zijn inderdaad vijf items in de lijst, hoewel de laatste altijd één minder is dan het nummer omdat Python op nul begint te tellen. Dus de laatste, Sandy, verwijst eigenlijk naar studenten [4] en niet naar studenten [5].

Een item toevoegen aan het einde van een Python-lijst

Als u wilt dat uw Python-code een nieuw item aan het einde van een lijst toevoegt, gebruikt u de methode .append () met de waarde die u tussen haakjes wilt toevoegen. U kunt een variabelenaam of een letterlijke waarde tussen de aanhalingstekens gebruiken.

In de volgende afbeelding wordt bijvoorbeeld de regel Goober toegevoegd aan de lijst door de regel met studenten.append ("Goober"). De regel die students.append leest (new_student) voegt elke naam die is opgeslagen in de variabele met de naam new_student aan de lijst toe. De methode .append () wordt altijd aan het einde van de lijst toegevoegd. Dus wanneer u de lijst afdrukt, ziet u die twee nieuwe namen aan het einde.

Lijst met bijlagen voor Python

U kunt een test gebruiken om te zien of een item in een lijst staat en het vervolgens alleen toevoegen als het item er nog niet is. Met de onderstaande code wordt bijvoorbeeld de naam Amber niet aan de lijst toegevoegd omdat die naam al in de lijst staat:

student_name = "Amanda"

# Studentnaam toevoegen, maar alleen als deze nog niet in de lijst staat.
als studentnaam bij studenten:
    print (studentnaam + "staat al in de lijst")
anders:
    students.append (student_name)
    print (studentnaam + "toegevoegd aan de lijst")

Een item invoegen in een Python-lijst

Hoewel u met de methode append () een item aan het einde van een lijst kunt toevoegen, kunt u met de methode insert () op elke positie een item aan de lijst toevoegen. De syntaxis voor insert () is

listname.insert (positie, item)

Vervang lijstnaam door de naam van de lijst, positie door de positie waarop u het item wilt invoegen (bijvoorbeeld 0 om het eerste item te maken, 1 om het tweede item te maken, enzovoort). Vervang het item door de waarde of de naam van een variabele die de waarde bevat die u in de lijst wilt plaatsen.

Met de volgende code is Lupe bijvoorbeeld het eerste item in de lijst:

#Maak een lijst met strings (namen).
studenten = ["Mark", "Amber", "Todd", "Anita", "Sandy"]

student_name = "Lupe"
# Voeg de naam van de student toe bovenaan de lijst.
students.insert (0, student_name)

#Laat me de nieuwe lijst zien.
afdrukken (studenten)

Als u de code uitvoert, toont print (studenten) de lijst nadat de nieuwe naam is ingevoegd, als volgt:

['Lupe', 'Mark', 'Amber', 'Todd', 'Anita', 'Sandy']

Een item in een Python-lijst wijzigen

Je kunt een item in een lijst wijzigen met de = toewijzingsoperator (bekijk deze algemene Python-operatoren), net als met variabelen. Zorg ervoor dat u het indexnummer tussen vierkante haken plaatst van het item dat u wilt wijzigen. De syntaxis is:

lijstnaam [index] = newValue

Vervang lijstnaam door de naam van de lijst; vervang index door het subscript (indexnummer) van het item dat u wilt wijzigen; en vervang nieuwe waarde door wat u in het lijstitem wilt plaatsen. Bekijk bijvoorbeeld deze code:

#Maak een lijst met strings (namen).
studenten = ["Mark", "Amber", "Todd", "Anita", "Sandy"]
studenten [3] = "Hobart"
afdrukken (studenten)

Wanneer u deze code uitvoert, is de uitvoer als volgt, omdat de naam van Anita is gewijzigd in Hobart.

['Mark', 'Amber', 'Todd', 'Hobart', 'Sandy']

Python-lijsten combineren

Als u twee lijsten hebt die u in één lijst wilt combineren, gebruikt u de functie extension () met de syntaxis:

original_list.extend (additional_items_list)

Vervang in uw code original_list door de naam van de lijst waaraan u nieuwe lijstitems toevoegt. Vervang extra_items_lijst door de naam van de lijst die de items bevat die u aan de eerste lijst wilt toevoegen. Hier is een eenvoudig voorbeeld met behulp van lijsten genaamd list1 en list2. Nadat list1.extend (list2) is uitgevoerd, bevat de eerste lijst de items uit beide lijsten, zoals u kunt zien in de uitvoer van de instructie print () aan het einde.

# Maak twee lijsten met namen.
list1 = ["Zara", "Lupe", "Hong", "Alberto", "Jake"]
list2 = ["Huey", "Dewey", "Louie", "Nader", "Bubba"]

# Voeg list2-namen toe aan list1.
list1.extend (List2)

# Lijst afdrukken 1.
afdrukken (lijst1)

['Zara', 'Lupe', 'Hong', 'Alberto', 'Jake', 'Huey', 'Dewey', 'Louie', 'Nader', 'Bubba']

Easy Parcheesi, niet?

Python-lijstitems verwijderen

Python biedt een methode remove () aan, zodat u elke waarde uit de lijst kunt verwijderen. Als het item meerdere keren in de lijst staat, wordt alleen het eerste exemplaar verwijderd. De volgende code toont bijvoorbeeld een lijst met letters met de letter C een paar keer herhaald. Vervolgens gebruikt de code letters.remove ("C") om de letter C uit de lijst te verwijderen:

# Verwijder "C" uit de lijst.
letters.remove ( "C")

#Laat me de nieuwe lijst zien.
afdrukken (letters)

Wanneer u deze code daadwerkelijk uitvoert en vervolgens de lijst afdrukt, ziet u dat alleen de eerste letter C is verwijderd:

['A', 'B', 'D', 'C', 'E', 'C']

Als u alle items moet verwijderen, kunt u een while-lus gebruiken om de .remove te herhalen zolang het item nog in de lijst staat. Deze code herhaalt bijvoorbeeld de .remove zolang de "C" nog in de lijst staat.

#Maak een lijst met tekenreeksen.
letters = ["A", "B", "C", "D", "C", "E", "C"]

Als u een item wilt verwijderen op basis van de positie in de lijst, gebruikt u pop () met een indexnummer in plaats van remove () met een waarde. Als u het laatste item uit de lijst wilt verwijderen, gebruikt u pop () zonder indexnummer.

De volgende code maakt bijvoorbeeld een lijst, een regel verwijdert het eerste item (0) en een andere verwijdert het laatste item (pop () met niets tussen haakjes). Bij het afdrukken van de lijst worden deze twee items verwijderd:

#Maak een lijst met tekenreeksen.
letters = ["A", "B", "C", "D", "E", "F", "G"]
 
#Verwijder het eerste item.
letters.pop (0)
#Verwijder het laatste item.
letters.pop ()
 
#Laat me de nieuwe lijst zien.
afdrukken (letters)

Het uitvoeren van de code laat zien dat het knallen van de eerste en laatste items inderdaad werkte:

['B', 'C', 'D', 'E', 'F']

Wanneer u een item uit de lijst popt (), kunt u een kopie van die waarde in een variabele opslaan. Deze afbeelding toont bijvoorbeeld dezelfde code als hierboven. Het bewaart echter kopieën van wat is verwijderd in variabelen met de naam first_removed en last_removed. Aan het einde wordt de Python-lijst afgedrukt en wordt ook aangegeven welke letters zijn verwijderd.

items verwijderen uit de Python-lijst

Python biedt ook een opdracht del (afkorting voor verwijderen) die elk item uit een lijst verwijdert op basis van het indexnummer (positie). Maar nogmaals, je moet onthouden dat het eerste item nul is. Stel dat u de volgende code uitvoert om item nummer 2 uit de lijst te verwijderen:

# Maak een lijst met strings.
letters = ["A", "B", "C", "D", "E", "F", "G"]
 
# Verwijder item sub 2.
del letters [2]
 
afdrukken (letters)

Als u die code uitvoert, wordt de lijst als volgt opnieuw weergegeven. De letter C is verwijderd, wat het juiste item is om te verwijderen, omdat letters genummerd zijn 0, 1, 2, 3, enzovoort.

['A', 'B', 'D', 'E', 'F', 'G']

Je kunt ook del gebruiken om een ​​hele lijst te verwijderen. Gebruik niet de vierkante haken en het indexnummer. De code die u hieronder ziet, maakt bijvoorbeeld een lijst en verwijdert deze. Als u probeert de lijst af te drukken na het verwijderen, veroorzaakt dit een fout, omdat de lijst niet meer bestaat wanneer de instructie print () wordt uitgevoerd.

Python-lijst verwijderen

Een Python-lijst wissen

Gebruik .clear () als u de inhoud van een lijst wilt verwijderen, maar niet de lijst zelf. De lijst bestaat nog steeds; het bevat echter geen items. Met andere woorden, het is een lege lijst. De volgende code laat zien hoe u dit kunt testen. Als u de code uitvoert, wordt aan het einde [] weergegeven, zodat u weet dat de lijst leeg is:

# Maak een lijst met strings.
letters = ["A", "B", "C", "D", "E", "F", "G"]
 
# Wis de lijst met alle vermeldingen.
letters.clear ()
 
# Laat me de nieuwe lijst zien.
afdrukken (letters)

[]

Tellen hoe vaak een item in een Python-lijst verschijnt

U kunt de methode Python count () gebruiken om te tellen hoe vaak een item in een lijst wordt weergegeven. Net als bij andere lijstmethoden is de syntaxis eenvoudig:

listname.count (x)

Vervang lijstnaam door de naam van uw lijst en x door de waarde die u zoekt (of de naam van een variabele die die waarde bevat).

De code in de onderstaande afbeelding telt hoe vaak de letter B in de lijst verschijnt, met een letter B tussen de haakjes van .count (). Dezelfde code telt ook het aantal C-graden, maar die waarde is opgeslagen in een variabele om het verschil in syntaxis te tonen. Beide tellingen werkten, zoals je kunt zien in de output van het programma onderaan. Er is er een toegevoegd om de F’s te tellen, zonder variabelen te gebruiken. De F’s werden geteld in de code die het bericht weergeeft. Er zijn geen F-graden, dus dit levert nul op, zoals u kunt zien in de uitvoer.

tel Python-lijstitems

Wanneer u getallen en tekenreeksen probeert te combineren om een ​​bericht te vormen, moet u onthouden dat u de getallen naar tekenreeksen moet converteren met de functie str (). Anders krijg je een foutmelding die zoiets zegt dat str alleen str (niet "int") aan str kan samenvoegen. In dat bericht staat int voor een geheel getal en str voor een string.

De index van een Python-lijstitem zoeken

Python biedt een .index () -methode die een getal teruggeeft dat de positie aangeeft, op basis van het indexnummer, van een item in een lijst. De syntaxis is:

listname.index (x)

Vervang zoals altijd lijstnaam door de naam van de lijst die u wilt doorzoeken. Vervang x wat u ook zoekt (zoals een letterlijke of variabele naam, zoals altijd). Natuurlijk is er geen garantie dat het item in de lijst staat, en zelfs als dit het geval is, is er geen garantie dat het item slechts één keer in de lijst staat. Als het item niet in de lijst staat, treedt er een fout op. Als het item meerdere keren in de lijst staat, wordt de index van het eerste overeenkomende item geretourneerd.

De volgende afbeelding toont een voorbeeld waarbij het programma crasht op de regel f_index = grades.index (look_for) omdat er geen F in de lijst staat.

Python-lijstitemindex

Een gemakkelijke manier om dat probleem te omzeilen, is door een if-statement te gebruiken om te zien of een item in de lijst staat voordat u het indexnummer probeert te achterhalen. Als het item niet in de lijst staat, geeft u dit bericht weer. Anders krijgt u het indexnummer en geeft u dit in een bericht weer. Die code is als volgt:

# Maak een lijst met strings.
grades = ["C", "B", "A", "D", "C", "B", "C"]
# Bepaal wat u zoekt
look_for = "F"
# Kijk of het item in de lijst staat.
als look_for in cijfers:
    # Als de lijst in de lijst staat, haal de index op en toon deze.
    print (str (look_for) + "staat op index" + str (grades.index (look_for)))
anders:
    # Probeer het indexnummer niet eens als het niet in de lijst staat.
    print (str (look_for) + "staat niet in de lijst.")

Python-lijsten alfabetiseren en sorteren

Python biedt een sort () methode voor het sorteren van lijsten. In zijn eenvoudigste vorm alfabetiseert het de items in de lijst (als het strings zijn). Als de lijst getallen bevat, worden deze van klein naar groot gesorteerd. Gebruik voor een eenvoudige soort sort () met lege haakjes:

listname.sort ()

Vervang lijstnaam door de naam van uw lijst. De volgende afbeelding toont een voorbeeld met een lijst met tekenreeksen en een lijst met getallen. In het voorbeeld werd voor elke lijst een nieuwe lijst gemaakt door eenvoudigweg elke gesorteerde lijst aan een nieuwe lijstnaam toe te wijzen. Vervolgens drukt de code de inhoud van elke gesorteerde lijst af.

sorteer Python-lijst

Als uw lijst strings bevat met een combinatie van hoofdletters en kleine letters, en als de resultaten van de soort er niet goed uitzien, probeer dan .sort () te vervangen door .sort (key = lambda s: s.lower ()) en vervolgens de code opnieuw uitvoeren.

Datums zijn een beetje lastiger omdat je ze niet zomaar als tekenreeksen kunt typen, zoals "31-12-2020". Ze moeten het datumgegevenstype zijn om correct te sorteren. Dit betekent dat u de datetime-module en de methode date () gebruikt om elke datum te definiëren. U kunt de datums aan de lijst toevoegen, net als elke andere lijst. Op de volgende regel maakt de code bijvoorbeeld een lijst met vier datums en is de code prima.

datums = [dt.date (2020,12,31), dt.date (2019,1,31), dt.date (2018,2,28), dt.date (2020,1,1)]

De computer zal het zeker niet erg vinden als u de lijst op deze manier maakt. Maar als u de code leesbaarder wilt maken voor uzelf of andere ontwikkelaars, wilt u misschien elke datum één voor één maken en toevoegen, dus het is een beetje gemakkelijker om te zien wat er aan de hand is en zodat u geen om zoveel komma's in één coderegel te verwerken. De onderstaande afbeelding toont een voorbeeld waarbij een lege lijst met de naam datelijst is gemaakt:

datelist = []
datums weergeven in Python

Vervolgens werd telkens één datum aan de lijst toegevoegd met de syntaxis dt.date (jaar, maand, dag).

Nadat de lijst is gemaakt, gebruikt de code datelist.sort () om ze in chronologische volgorde te sorteren (van vroeg naar laat). U hoeft print (gegevenslijst) in die code niet te gebruiken, omdat die methode de datums weergeeft met de gegevenstype-informatie zoals deze:

[datetime.date (2018, 2, 28), datetime.date (2019, 1, 31), datetime.date (2020, 1, 1), datetime.date (2020, 12, 31)]

Niet de gemakkelijkste lijst om te lezen. Dus in plaats van de hele lijst met één print () -opdracht af te drukken, kunt u elke datum in de lijst doorlopen en elke datum opmaken met de f-string% m /% d /% Y. Dit toont elke datum op zijn eigen regel in mm / dd / jjjj

Als u items in omgekeerde volgorde wilt sorteren, plaatst u reverse = True tussen de haakjes sort () (en vergeet niet de eerste letter in hoofdletters te typen). De onderstaande afbeelding toont voorbeelden van het sorteren van alle drie de lijsten in aflopende (omgekeerde) volgorde met behulp van reverse = True.

sorteer info in omgekeerde lijst van Python

Een Python-lijst omkeren

U kunt ook de volgorde van items in een lijst omkeren met de methode .reverse. Dit is niet hetzelfde als omgekeerd sorteren, omdat wanneer u omgekeerd sorteert, u nog steeds sorteert: Z – A voor tekenreeksen, de grootste tot de kleinste voor getallen, de laatste tot de vroegste voor datums. Wanneer u een lijst omkeert, keert u eenvoudig de items in de lijst om, ongeacht hun volgorde, zonder ze op enige manier te proberen te sorteren.

De volgende code toont een voorbeeld waarin u de volgorde van de namen in de lijst omkeert en vervolgens de lijst afdrukt. De uitvoer toont de lijstitems omgekeerd van hun oorspronkelijke volgorde:

# Maak een lijst met strings.
names = ["Zara", "Lupe", "Hong", "Alberto", "Jake"]
# Keer de lijst om
names.reverse ()
# Druk de lijst af
afdrukken (namen)
 
['Jake', 'Alberto', 'Hong', 'Lupe', 'Zara']

Een Python-lijst kopiëren

Als u ooit met een kopie van een lijst moet werken, gebruikt u de methode .copy () om de oorspronkelijke lijst niet te wijzigen. De volgende code is bijvoorbeeld vergelijkbaar met de vorige code, behalve dat u in plaats van de volgorde van de oorspronkelijke lijst om te keren, een kopie van de lijst maakt en die omkeert. Door de inhoud van elke lijst af te drukken, wordt aangegeven hoe de eerste lijst nog in de oorspronkelijke volgorde staat, terwijl de tweede omgekeerd is:

# Maak een lijst met strings.
names = ["Zara", "Lupe", "Hong", "Alberto", "Jake"]
 
# Maak een kopie van de lijst
backward_names = names.copy ()
# Keer de kopie om
backward_names.reverse ()
 
# Druk de lijst af
afdrukken (namen)
afdrukken (backward_names)
 
['Zara', 'Lupe', 'Hong', 'Alberto', 'Jake']
['Jake', 'Alberto', 'Hong', 'Lupe', 'Zara']

Voor toekomstige referenties geeft de volgende tabel een overzicht van de methoden die u heeft geleerd.