Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Iterera över index | Loopar
Introduktion till Python
Avsnitt 5. Kapitel 4
single

single

bookIterera över index

Svep för att visa menyn

I den föregående uppgiften angav du ett specifikt antal objekt till funktionen range(). Men vad händer om du behöver bestämma antalet dynamiskt? Det är här indexiteration blir avgörande.

Indexiteration är en grundläggande teknik i Python som gör det möjligt att komma åt och ändra element utifrån deras positioner i datastrukturer som listor eller arrayer. Det är särskilt användbart för uppgifter som kräver noggrann kontroll över varje element, till exempel uppdatering av lagernivåer eller hantering av försäljningsdata i en livsmedelsbutik.

Se när Alex visar hur iteration över index kan förenkla arbetsflöden i vårt exempel med livsmedelsbutiken:

Att iterera över index är användbart när du behöver komma åt både indexet och värdet för varje element i en lista. När vi använder range() tillsammans med len() kombinerar vi två funktioner för att skapa en sekvens av tal som motsvarar indexen för listelementen. Denna metod är särskilt användbar i loopar där du behöver komma åt eller ändra element baserat på deras position.

Till exempel, denna for-loop kommer åt indexet och värdet för varje 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

Exempelapplikation

För att applicera en rabatt på en lista med priser behöver vi ändra elementen i listan direkt. Om vi använder en enkel loop som for cost in prices: får vi bara en kopia av varje objekt, inte en referens till det faktiska objektet i listan. Ändringar som görs på detta sätt påverkar inte den ursprungliga listan.

För att säkerställa att vi uppdaterar varje element direkt i listan prices använder vi range(len(prices)) för att iterera över indexen. Detta gör att vi kan applicera en rabattfaktor på varje 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

Observera

  • Formeln prices[cost] -= prices[cost] * discount_factor är ekvivalent med prices[cost] = prices[cost] - prices[cost] * discount_factor. Detta subtraherar en del av det ursprungliga priset (bestämt av rabatten) från sig själv, vilket effektivt applicerar rabatten;

  • cost + 1 i utskriftskommandot justerar indexet så att det ser ut att börja från 1 istället för 0, vilket gör det mer användarvänligt.

Denna metod säkerställer att den ursprungliga listan prices uppdateras direkt med de nya, rabatterade priserna, vilket omedelbart återspeglar ändringarna i hela programmet där listan prices används.

Uppgift

Svep för att börja koda

I denna uppgift ska du tillämpa olika rabattprocent på produktpriser baserat på deras position (index) i en lista.

Du får en lista med produktpriser. Varje pris ska uppdateras enligt dess index i listan.

Steg

  1. Börja med den angivna listan med priser:
prices = [29.99, 45.50, 12.75, 38.20]
  1. Använd en for-loop tillsammans med range() och len() för att iterera över indexen i prices-listan (från index 0 till sista index).

  2. Inuti loopen, kontrollera det aktuella indexet och tillämpa motsvarande rabatt:

  • Index 0 → tillämpa 10 % rabatt
  • Index 1 → tillämpa 20 % rabatt
  • Index 2 → tillämpa 15 % rabatt
  • Index 3 → tillämpa 5 % rabatt
  1. Uppdatera varje pris direkt i prices-listan efter att rabatten har tillämpats.

  2. Efter att priset har uppdaterats, skriv ut resultatet i följande format:

Updated price for item {index}: ${updated_price:.2f}

Obs

.2f formaterar ett tal till två decimaler (till exempel, 5 blir 5.00). Använd det i en f-string så här: {price:.2f}.

Lösning

Switch to desktopByt till skrivbordet för praktisk övningFortsätt där du är med ett av alternativen nedan
Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 5. Kapitel 4
single

single

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

some-alt