Iterere Over Indexer
I den forrige opgave gav du et specifikt antal elementer til range()
funktionen. Men hvad nu hvis du har brug for at bestemme antallet dynamisk? Det er her, indeksiteration bliver essentiel.
Indeksiteration er en kerne teknik i Python, der giver dig mulighed for at få adgang til og ændre elementer ved deres positioner inden for datastrukturer som lister eller arrays. Det er især nyttigt for opgaver, der kræver præcis kontrol over hvert element, såsom opdatering af lagerbeholdninger eller håndtering af salgsdata i en købmandsbutik.
Se, hvordan Alex demonstrerer, hvordan iteration over indekser kan forenkle operationer i vores købmandseksempel:
Iteration over indekser er nyttig, når du har brug for at få adgang til både indekset og værdien af hvert element i en liste. Når vi bruger range()
med len()
, kombinerer vi to funktioner for at generere en sekvens af tal svarende til indekserne af listeelementerne. Denne metode er særligt nyttig i loops, hvor du har brug for at få adgang til eller ændre elementer baseret på deres position.
For eksempel, denne for
loop får adgang til indekset og værdien af hvert element i 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
Eksempelapplikation
For at anvende en rabat på en liste af priser, er vi nødt til at ændre elementerne i listen direkte. Ved at bruge en simpel løkke som for cost in prices:
vil vi kun få en kopi af hvert element, ikke en reference til det faktiske element i listen. Ændringer foretaget på denne måde vil ikke påvirke den oprindelige liste.
For at sikre, at vi direkte opdaterer hvert element i prices
-listen, bruger vi range(len(prices))
til at iterere over indekserne. Dette giver os mulighed for at anvende en rabatfaktor på hvert 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)
Bemærk
Formlen
prices[cost] -= prices[cost] * discount_factor
svarer tilprices[cost] = prices[cost] - prices[cost] * discount_factor
. Dette trækker en del af den oprindelige pris (bestemt af rabatten) fra sig selv, hvilket effektivt anvender rabatten.
cost + 1
i print-udsagnet justerer indekset, så det ser ud til at starte fra1
i stedet for0
, hvilket gør det mere brugervenligt.
Denne metode sikrer, at den oprindelige liste prices
opdateres direkte med de nye, nedsatte priser, hvilket afspejler ændringerne straks på tværs af programmet, hvor end prices
-listen bruges.
Swipe to start coding
Opdater lagerbeholdninger ved at kombinere data fra to lister: stock_items
og shipment_received
. Derefter vil resultatet opdatere stock_items
-listen.
- Både
stock_items
ogshipment_received
er lister af lister, hver indeholdende et produktnavn og dets mængde. - Brug en
for
-løkke medrange()
oglen()
til at iterere gennem indeksene afstock_items
. - For hvert produkt, tilføj forsendelsesmængden til den eksisterende beholdning og opdater værdien i
stock_items
.
Outputkrav
- For hvert produkt, print:
Stock updated for <product_name>: <updated_quantity> units
- Efter alle opdateringer, print:
Final stock quantities:
Stock Items: <stock_items>
Løsning
Tak for dine kommentarer!