Iterering Over Indekser
I den forrige opgave angav du et specifikt antal elementer til funktionen range()
. Men hvad nu, hvis du skal bestemme antallet dynamisk? Det er her, indeks-iteration bliver afgørende.
Indeks-iteration er en grundlæggende teknik i Python, der gør det muligt at tilgå og ændre elementer ud fra deres positioner i datastrukturer som lister eller arrays. Det er især nyttigt til opgaver, der kræver præcis kontrol over hvert element, såsom opdatering af lagerbeholdning eller håndtering af salgsdata i et supermarked.
Se med, når Alex demonstrerer, hvordan iteration over indekser kan forenkle operationer i vores supermarkedseksempel:
Iteration over indekser er nyttig, når du skal tilgå både indekset og værdien af hvert element i en liste. Når vi bruger range()
sammen med len()
, kombinerer vi to funktioner for at generere en sekvens af tal, der svarer til indeksene for listeelementerne. Denne metode er særligt anvendelig i løkker, hvor du skal tilgå eller ændre elementer baseret på deres position.
For eksempel tilgår denne for
-løkke både 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
Eksempel på anvendelse
For at anvende en rabat på en liste af priser, skal vi ændre elementerne i listen direkte. Hvis vi bruger en simpel løkke som for cost in prices:
, får vi kun 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 opdaterer hvert element direkte i prices
-listen, bruger vi range(len(prices))
til at iterere over indeksene. Dette gør det muligt 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 og anvender dermed rabatten.
cost + 1
i print-udtrykket 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, så ændringerne straks afspejles overalt i programmet, hvor prices
-listen bruges.
Swipe to start coding
Opdater lagerniveauer ved at kombinere data fra to lister: stock_items
og shipment_received
. Resultatet vil derefter opdatere listen stock_items
.
- Både
stock_items
ogshipment_received
er lister af lister, hvor hver indeholder et produktnavn og dets antal. - Brug en
for
-løkke medrange()
oglen()
til at iterere gennem indeksene istock_items
. - For hvert produkt lægges forsendelsesmængden til det eksisterende lager, og værdien opdateres i
stock_items
.
Outputkrav
- For hvert produkt, udskriv:
Lager opdateret for <product_name>: <updated_quantity> enheder
- Efter alle opdateringer, udskriv:
Endelige lagerantal:
Lagerartikler: <stock_items>
Løsning
Tak for dine kommentarer!