Itereren Over Indexen
In de vorige taak heb je een specifiek aantal items aan de range()
functie gegeven. Maar wat als je het aantal dynamisch moet bepalen? Dit is waar index iteratie essentieel wordt.
Index iteratie is een kerntechniek in Python die je in staat stelt om elementen te benaderen en te wijzigen op basis van hun posities binnen datastructuren zoals lijsten of arrays. Het is vooral nuttig voor taken die nauwkeurige controle over elk element vereisen, zoals het bijwerken van voorraadniveaus of het beheren van verkoopgegevens in een supermarkt.
Kijk hoe Alex demonstreert hoe itereren over indexen operaties in ons supermarktvoorbeeld kan vereenvoudigen:
Itereren over indexen is nuttig wanneer je zowel de index als de waarde van elk element in een lijst moet benaderen. Wanneer we range()
met len()
gebruiken, combineren we twee functies om een reeks getallen te genereren die overeenkomen met de indices van de lijst elementen. Deze methode is bijzonder nuttig in lussen waar je elementen moet benaderen of wijzigen op basis van hun positie.
Bijvoorbeeld, deze for
lus benadert de index en de waarde van elk element in de grocery_list
:
# List of grocery items grocery_list = ["Apples", "Bananas", "Carrots", "Cucumbers"] # Initialize a for loop to iterate over indexes for item in range(len(grocery_list)): print("Index:", item) print("Item:", grocery_list[item]) print("----") # Printing a divider line for clarity
Voorbeeldtoepassing
Om een korting toe te passen op een lijst van prijzen, moeten we de elementen van de lijst direct wijzigen. Het gebruik van een eenvoudige lus zoals for cost in prices:
zou ons alleen een kopie van elk item geven, niet een verwijzing naar het daadwerkelijke item in de lijst. Wijzigingen die op deze manier worden aangebracht zouden de originele lijst niet beïnvloeden.
Om ervoor te zorgen dat we elk element direct bijwerken in de prices
lijst, gebruiken we range(len(prices))
om over de indexen te itereren. Dit stelt ons in staat om een kortingsfactor toe te passen op elk element:
# List of original prices of grocery items prices = [1.50, 2.00, 0.75, 3.25] # Discount factor (10% off each item) discount_factor = 0.10 # Iterate over the list of prices using range(len()) for cost in range(len(prices)): # Apply the discount by reducing the price prices[cost] -= prices[cost] * discount_factor print(f"New price of item {cost + 1}: ${prices[cost]}") print("Updated prices:", prices)
Opmerking
De formule
prices[cost] -= prices[cost] * discount_factor
is gelijk aanprices[cost] = prices[cost] - prices[cost] * discount_factor
. Dit trekt een deel van de oorspronkelijke prijs (bepaald door de korting) van zichzelf af, waardoor de korting effectief wordt toegepast.De
cost + 1
in de printopdracht past de index aan zodat deze lijkt te beginnen bij1
in plaats van0
, waardoor het gebruiksvriendelijker is.
Deze methode zorgt ervoor dat de oorspronkelijke lijst prices
direct wordt bijgewerkt met de nieuwe, verdisconteerde prijzen, waardoor de wijzigingen onmiddellijk in het hele programma worden weerspiegeld, waar de prices
-lijst ook wordt gebruikt.
Swipe to start coding
Werk de voorraadniveaus bij door gegevens uit twee lijsten te combineren: stock_items
en shipment_received
. Vervolgens zal het resultaat de stock_items
-lijst bijwerken.
- Zowel
stock_items
alsshipment_received
zijn lijsten van lijsten, elk met een productnaam en de hoeveelheid. - Gebruik een
for
-lus metrange()
enlen()
om door de indices vanstock_items
te itereren. - Voeg voor elk product de hoeveelheid van de zending toe aan de bestaande voorraad en werk de waarde in
stock_items
bij.
Uitvoervereisten
- Voor elk product, print:
Voorraad bijgewerkt voor <product_name>: <updated_quantity> eenheden
- Na alle updates, print:
Eindvoorraad hoeveelheden:
Voorraadartikelen: <stock_items>
Oplossing
Bedankt voor je feedback!