Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Iterere Over Indekser | Løkker
Introduksjon til Python

book
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
12345678
# 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
copy

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)
12345678910111213
# 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)
copy

Merk

  • Formelen prices[cost] -= prices[cost] * discount_factor er ekvivalent med prices[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 fra 1 i stedet for 0, 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.

Oppgave

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 og shipment_received er lister med lister, hvor hver inneholder et produktnavn og dets antall.
  • Bruk en for-løkke med range() og len() for å iterere gjennom indeksene til stock_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

# List representing the current stock of items
stock_items = [
["Apples", 30],
["Bananas", 20],
["Oranges", 15],
["Tomatoes", 25]
]

# Quantities received from the new shipment
shipment_received = [["Apples", 120], ["Bananas", 180], ["Oranges", 100], ["Tomatoes", 150]]

# Iterate through the indices of items
for index in range(len(stock_items)):
# Update the stock by adding the received shipment quantities
stock_items[index][1] += shipment_received[index][1]
print(f"Stock updated for {stock_items[index][0]}: {stock_items[index][1]} units")

print("Final stock quantities:")
print("Stock Items:", stock_items)
Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 5. Kapittel 4
single

single

# List representing the current stock of items
stock_items = [
["Apples", 30],
["Bananas", 20],
["Oranges", 15],
["Tomatoes", 25]
]

# Quantities received from the new shipment
shipment_received = [["Apples", 120], ["Bananas", 180], ["Oranges", 100], ["Tomatoes", 150]]

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

some-alt