Iterere Over Indekser
I forrige oppgave oppga du et spesifikt antall elementer til range()
-funksjonen. Men hva om du må bestemme antallet dynamisk? Dette er hvor indeksiterasjon blir essensielt.
Indeksiterasjon er en grunnleggende teknikk i Python som lar deg få tilgang til og endre elementer basert på deres posisjoner i datastrukturer som lister eller arrayer. Det er spesielt nyttig for oppgaver som krever nøyaktig kontroll over hvert element, som å oppdatere lagerbeholdning eller håndtere salgsdata i en dagligvarebutikk.
Se hvordan Alex demonstrerer hvordan iterasjon over indekser kan forenkle operasjoner i vårt dagligvarebutikk-eksempel:
Å iterere over indekser er nyttig når du trenger tilgang til både indeksen og verdien til hvert element i en liste. Når vi bruker range()
sammen med len()
, kombinerer vi to funksjoner for å generere en tallsekvens som tilsvarer indeksene til listeelementene. Denne metoden er spesielt nyttig i løkker hvor du må få tilgang til eller endre elementer basert på deres posisjon.
For eksempel, denne for
-løkka får tilgang til både indeksen og verdien til 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å bruk
For å gi rabatt på en liste med priser, må vi endre elementene i listen direkte. Hvis vi bruker en enkel løkke som for cost in prices:
, får vi kun en kopi av hvert element, ikke en referanse til det faktiske elementet i listen. Endringer gjort på denne måten vil ikke påvirke den opprinnelige listen.
For å sikre at vi oppdaterer hvert element direkte i prices
-listen, bruker vi range(len(prices))
for å iterere over indeksene. Dette lar oss bruke en rabattfaktor 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)
Merk
Formelen
prices[cost] -= prices[cost] * discount_factor
er ekvivalent medprices[cost] = prices[cost] - prices[cost] * discount_factor
. Dette trekker fra en andel av den opprinnelige prisen (bestemt av rabatten) fra seg selv, og gir dermed rabatten.
cost + 1
i print-setningen justerer indeksen slik at den starter fra1
i stedet for0
, noe som gjør det mer brukervennlig.
Denne metoden sikrer at den opprinnelige listen prices
oppdateres direkte med de nye, rabatterte prisene, slik at endringene umiddelbart gjenspeiles i hele programmet der prices
-listen brukes.
Swipe to start coding
Oppdater lagerbeholdningen ved å kombinere data fra to lister: stock_items
og shipment_received
. Resultatet skal deretter oppdatere listen stock_items
.
- Både
stock_items
ogshipment_received
er lister med lister, hvor hver inneholder et produktnavn og dets antall. - Bruk en
for
-løkke medrange()
oglen()
for å iterere gjennom indeksene tilstock_items
. - For hvert produkt, legg til antallet fra leveransen til eksisterende lager og oppdater verdien i
stock_items
.
Krav til utskrift
- For hvert produkt, skriv ut:
Stock updated for <product_name>: <updated_quantity> units
- Etter alle oppdateringer, skriv ut:
Final stock quantities:
Stock Items: <stock_items>
Løsning
Takk for tilbakemeldingene dine!