Iterera över index
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 vid 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 generera en sekvens av tal som motsvarar indexen för listans element. 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
:
# 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
Exempelapplikation
För att tillämpa 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 endast 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 det möjligt att applicera en rabattfaktor på varje 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)
Observera
Formeln
prices[cost] -= prices[cost] * discount_factor
är ekvivalent medprices[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 tillämpar rabatten.
cost + 1
i utskriftskommandot justerar indexet så att det ser ut att börja från1
istället för0
, 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.
Swipe to start coding
Uppdatera lagernivåerna genom att kombinera data från två listor: stock_items
och shipment_received
. Resultatet kommer sedan att uppdatera listan stock_items
.
- Både
stock_items
ochshipment_received
är listor av listor, där varje inre lista innehåller ett produktnamn och dess kvantitet. - Använd en
for
-loop medrange()
ochlen()
för att iterera genom indexen istock_items
. - För varje produkt, addera leveranskvantiteten till det befintliga lagret och uppdatera värdet i
stock_items
.
Utskriftskrav
- För varje produkt, skriv ut:
Stock updated for <product_name>: <updated_quantity> units
- Efter alla uppdateringar, skriv ut:
Final stock quantities:
Stock Items: <stock_items>
Lösning
Tack för dina kommentarer!