Uit de cursus: Programmeerconcepten voor Python

Lijsten

- Lijsten en tuples zijn twee gegevensstructuren die u kunt gebruiken om een verzameling objecten in een specifieke volgorde op te slaan. U kunt een lijst visualiseren als een rij objecten die in een rij staan. Elk object in de lijst wordt geïndexeerd door een nummer, en in de wereld van programmeren begint de nummering met nul voor het eerste item, één voor het volgende item, enzovoort. U kunt deze indexen gebruiken om afzonderlijke items in de lijst in te voegen, te wijzigen en te verwijderen. - Hé, je bent terug van de winkel. - Ja, en toen ik daar mijn auto parkeerde, had ik een moment van genialiteit. Ik heb bedacht hoe ik lijstjes kan uitleggen. - Wat hebben lijstjes en auto's met elkaar te maken? - Olivia, dat is echt een goede vraag. Laat me je een verhaal vertellen. In veel opzichten kun je denken aan een lijst met objecten als een rij geparkeerde auto's. De auto's zijn in volgorde, te beginnen met de eerste auto aan het einde, die op indexnummer nul staat. Toen ik vandaag in de winkel aankwam, besloot ik mijn auto aan de lijst toe te voegen door aan het einde van de rij te parkeren. Om me te herinneren waar ik had geparkeerd, telde ik de lijst met auto's af en stelde vast dat mijn auto op de vijfde plek stond, wat indexnummer vier was. Dus ik herinnerde me dat nummer en ging naar de winkel. Terwijl ik in de winkel aan het winkelen was, parkeerden andere klanten die naar de winkel kwamen ook hun auto in de lijst. Soms, als er een nieuwe klant arriveerde, vervingen ze een andere auto in de lijst omdat er iemand anders wegging. Wanneer een nieuwe auto een andere auto met een specifieke index vervangt, heeft dit geen invloed op iemand anders in de lijst. De lijst is gewoon het ruilen van de ene auto voor de andere. Evenzo waren sommige andere klanten die aankwamen beleefd en voegden hun auto toe aan de lijst, net zoals ik deed door aan het einde van de rij te parkeren. Als iemand dat doet, neemt zijn auto de volgende index in de lijst over en heeft niemand anders er last van. - Dat is logisch. Mensen komen en gaan gewoon naar hun auto's. -Precies. Zolang nieuwe auto's andere auto's in de lijst vervingen of zichzelf aan het einde van de lijst vastpinden, bleef mijn auto op indexnummer vier, maar er deed zich een probleem voor toen iemand kwam opdagen en besloot dat ze vooraan op de lijst moesten parkeren. Wanneer die persoon zijn auto op de eerste positie in de lijst op index nul plaatste, veranderde het de index van alle auto's achter die positie omdat het ze allemaal naar beneden in de lijst verschoof. Dit betekent dat mijn auto niet meer op index vier stond waar ik hem had achtergelaten. Toen ik uit de winkel kwam en hem daar zocht, vond ik de auto van iemand anders. - Hoe heb je je auto gevonden? - Nou, mijn auto kan overal in de lijst staan, dus ik moest er gewoon naar zoeken totdat ik hem vond. Ik begon mijn zoektocht aan het begin van de lijst en vervolgens controleerde ik elke auto op volgorde totdat ik uiteindelijk mijn auto vond. Als ik vooraan in de lijst geparkeerd had gestaan, zou het een vrij snelle zoektocht zijn geweest. Helaas stond ik dichter bij het einde van de lijst geparkeerd, wat betekent dat ik veel auto's moest doorzoeken tot ik de mijne vond, en dat duurde lang. Ik voelde me ook een beetje slecht toen ik wegging omdat ik mijn auto van de lijst had verwijderd, en dat betekende dat iedereen die achter me geparkeerd stond, werd opgeschoven en dat hun index weer werd gewijzigd. - Nou, ik ben blij dat je uiteindelijk je auto hebt gevonden. -Ik ook van jou. Je moet niet verwachten dat een object op dezelfde positie in een lijst blijft staan als je andere objecten invoegt en verwijdert, omdat dat dingen kan verschuiven. - [Instructeur] Voor deze demonstratie voeren we gewoon commando's rechtstreeks in deze interactieve Python-shell in die ik heb geopend in Code Spaces. Een manier om een lijst in Python te maken, is door een reeks objecten tussen vierkante haken te plaatsen, waarbij de objecten worden gescheiden door komma's, zoals hier wordt weergegeven. Met deze regel code wordt een nieuw lijstobject gemaakt met de naam Rij, dat vier tekenreeksen bevat die de auto's vertegenwoordigen die bij de winkel geparkeerd stonden toen Baron arriveerde. Ik druk op enter om dat commando naar de tolk te sturen. Toen Baron eerder bij de winkel aankwam, parkeerde hij zijn auto aan het einde van de lijst. We kunnen een item aan het einde van een lijst toevoegen met behulp van de toevoegmethode. Dus laten we dat gebruiken om zijn Mercedes aan de rij auto's toe te voegen. Als ik nu Row typ, drukt de Python-shell de inhoud van die lijst af en kunnen we zien dat de Mercedes aan het einde is toegevoegd. De auto van Baron staat momenteel op de vijfde positie in de lijst, wat overeenkomt met indexnummer vier. We kunnen het item in die index in de lijst openen met behulp van vierkante haken zoals deze. Als we een item in de lijst willen vervangen, kunnen we dat doen door het nieuwe object met het gelijkteken toe te wijzen aan een specifieke indexlocatie. Terwijl Baron in de winkel was, verliet een deel van de klanten de winkel en namen nieuwe klanten hun parkeerplaatsen in. Laten we de BMW die index twee nam vervangen door de Jeep. Als we de inhoud van de rij auto's nog eens bekijken, zien we dat de Jeep de BMW heeft vervangen, die vroeger op index twee stond. Alle andere auto's staan nog op hun oorspronkelijke positie in de lijst. Volgens het verhaal van Baron parkeerden enkele van de andere klanten die kwamen opdagen aan het einde van de rij, dus laten we een andere auto aan het einde van de lijst parkeren met behulp van de toevoegmethode. Deze keer maken we er een Honda van. We controleren de lijst om te zien of het aan het einde is en we kunnen controleren wat er bij index vier staat om te zien dat de Mercedes van Baron er nog steeds is waar hij hem oorspronkelijk heeft geparkeerd. Het toevoegen van objecten aan het einde van een lijst heeft geen invloed op de index van de andere objecten die al in de lijst staan. Als we nu de persoon willen vertegenwoordigen die kwam opdagen en zijn auto vooraan in de lijst parkeerde, kunnen we dit doen met behulp van de invoegmethode. Het eerste argument voor de invoegmethode is de index voor waar we het nieuwe object willen invoegen. Omdat we een auto vooraan in de lijst willen zetten, maken we de indexwaarde nul en maak ik van de auto een Kia. Als we de inhoud van de lijst nog eens controleren, kunnen we zien dat de Kia zijn plaats vooraan in de lijst heeft ingenomen en dat alle andere auto's naar beneden zijn verschoven. Dat betekent dat als ik zoek naar de auto van Baron op index vier waar hij hem heeft achtergelaten, uh oh, dat is niet de Mercedes waarin Baron naar de winkel kwam. Dat is een Lexus die op die plek geparkeerd staat. Ik ken Baron, en hij is niet het soort man dat een Lexus steelt uit de supermarkt. We moeten uitzoeken waar zijn Mercedes is gebleven. We kunnen een lijst doorzoeken om de index van een specifiek object te vinden met behulp van de indexmethode. Laten we, om dat te doen, deze auto doorgeven, dat is de string Mercedes naar de indexmethode. De indexmethode doorzoekt de lijst totdat het Mercedes-object wordt aangetroffen en retourneert vervolgens de index waar het is gevonden. In dit geval stond de Mercedes van Baron geparkeerd op indexnummer vijf. De indexmethode begint zijn zoekopdracht aan het begin van de lijst en werkt zich een weg naar beneden in de rij, net zoals Baron deed toen hij eerder in de winkel naar zijn auto zocht. Dus als het object waarnaar Python zoekt vooraan in de lijst staat, zal het het relatief snel vinden, maar als het object zich aan het einde van een echt lange lijst bevindt, kan dat zoekproces veel langer duren. Het is ook belangrijk op te merken dat de indexmethode alleen de eerste overeenkomst retourneert die wordt gevonden, omdat deze stopt zodra het object wordt gevonden waarnaar het op zoek is. Dus als er meerdere identieke Mercedes-objecten in deze rij geparkeerd stonden, zouden we alleen de index ontvangen van het eerste dat de indexmethode vindt. Nu we weten dat de auto van Baron op indexnummer vijf staat, kunnen we hem uit de lijst halen door gebruik te maken van de POP-methode. POP verwijdert het object bij de opgegeven index. Dus laten we het de index van vijf geven en we kunnen zien dat het de Mercedes van Baron teruggeeft, die op de vijfde index stond. Laten we, om te laten zien dat de Mercedes weg is, de inhoud van de lijst bekijken. Nu is er nog een andere lijstmethode die ik je wil laten zien, en dat is de verwijdermethode. In plaats van de index te gebruiken om de index van Baron's auto te vinden en vervolgens POP te gebruiken om hem uit de lijst te halen, hadden we gewoon de verwijdermethode kunnen gebruiken, die in feite die twee acties combineert tot één routine. Dus laten we proberen de verwijdermethode te gebruiken om van de Lexus af te komen. In tegenstelling tot de POP-methode wordt bij het gebruik van verwijderen het object dat uit de lijst is verwijderd niet geretourneerd. Dat is logisch, want we hebben hem precies verteld welk object we wilden verwijderen, dus we weten al wat het eruit gaat halen. Als ik nu nog een laatste keer de inhoud van de lijst laat zien, kunnen we zien dat de Lexus er niet meer is.

Inhoud