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

bookIterere Over Indekser

I forrige oppgave oppga du et bestemt 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 presis kontroll over hvert element, for eksempel oppdatering av varelager eller håndtering av 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 sekvens av tall som tilsvarer indeksene til listeelementene. Denne metoden er spesielt nyttig i løkker der 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:

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. Ved å bruke 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 gjør det mulig å bruke en rabattfaktor på hvert element:

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
Note
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 overalt i programmet hvor listen prices brukes.

Oppgave

Swipe to start coding

Rabatt etter posisjon

Oppdater listen prices ved å bruke ulike rabattprosenter på hvert element, basert på elementets posisjon i listen. Bruk indeksiterasjon for å sikre at du oppdaterer den opprinnelige listen prices direkte.

  • Bruk en for-løkke med range() og len() for å iterere gjennom indeksene til prices;

  • For hver indeks, bruk følgende rabatter og oppdater listen:

    • Indeks 0: 10 % rabatt (multipliser med 0.9);
    • Indeks 1: 20 % rabatt (multipliser med 0.8);
    • Indeks 2: 15 % rabatt (multipliser med 0.85);
    • Indeks 3: 5 % rabatt (multipliser med 0.95);
  • Etter at hver pris er oppdatert, skriv ut en linje: Updated price for item {index}: ${updated_price:.2f};

  • Bruk .2f i utskriften for å formatere prisene til 2 desimaler (for eksempel blir 5 til 5.00).

  • Du må oppdatere listen prices direkte, ikke bare skrive ut de rabatterte verdiene.

Løsning

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 5. Kapittel 6
single

single

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

close

bookIterere Over Indekser

Sveip for å vise menyen

I forrige oppgave oppga du et bestemt 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 presis kontroll over hvert element, for eksempel oppdatering av varelager eller håndtering av 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 sekvens av tall som tilsvarer indeksene til listeelementene. Denne metoden er spesielt nyttig i løkker der 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:

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. Ved å bruke 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 gjør det mulig å bruke en rabattfaktor på hvert element:

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
Note
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 overalt i programmet hvor listen prices brukes.

Oppgave

Swipe to start coding

Rabatt etter posisjon

Oppdater listen prices ved å bruke ulike rabattprosenter på hvert element, basert på elementets posisjon i listen. Bruk indeksiterasjon for å sikre at du oppdaterer den opprinnelige listen prices direkte.

  • Bruk en for-løkke med range() og len() for å iterere gjennom indeksene til prices;

  • For hver indeks, bruk følgende rabatter og oppdater listen:

    • Indeks 0: 10 % rabatt (multipliser med 0.9);
    • Indeks 1: 20 % rabatt (multipliser med 0.8);
    • Indeks 2: 15 % rabatt (multipliser med 0.85);
    • Indeks 3: 5 % rabatt (multipliser med 0.95);
  • Etter at hver pris er oppdatert, skriv ut en linje: Updated price for item {index}: ${updated_price:.2f};

  • Bruk .2f i utskriften for å formatere prisene til 2 desimaler (for eksempel blir 5 til 5.00).

  • Du må oppdatere listen prices direkte, ikke bare skrive ut de rabatterte verdiene.

Løsning

Switch to desktopBytt til skrivebordet for virkelighetspraksisFortsett der du er med et av alternativene nedenfor
Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 5. Kapittel 6
single

single

some-alt