Ітерація за Індексами
У попередньому завданні ви вказували конкретну кількість елементів для функції range()
. Але що робити, якщо потрібно визначити кількість динамічно? Саме тут стає важливою ітерація за індексами.
Ітерація за індексами — це базова техніка в Python, яка дозволяє отримувати доступ і змінювати елементи за їхніми позиціями у структурах даних, таких як списки або масиви. Це особливо корисно для завдань, які потребують точного контролю над кожним елементом, наприклад, оновлення рівнів запасів або керування даними про продажі у продуктовому магазині.
Перегляньте, як Олексій демонструє, як ітерація за індексами може спростити операції на прикладі нашого продуктового магазину:
Ітерація за індексами корисна, коли потрібно отримати доступ до обох — індексу та значення кожного елемента у списку. Коли ми використовуємо range()
разом із len()
, ми поєднуємо дві функції для створення послідовності чисел, що відповідають індексам елементів списку. Цей метод особливо зручний у циклах, де потрібно отримати доступ або змінити елементи залежно від їхньої позиції.
Наприклад, цей цикл for
отримує індекс і значення кожного елемента у 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
Приклад застосування
Щоб застосувати знижку до списку цін, необхідно змінювати елементи списку безпосередньо. Використання простого циклу, такого як for cost in prices:
, надає лише копію кожного елемента, а не посилання на сам елемент у списку. Зміни, внесені таким чином, не впливають на оригінальний список.
Щоб безпосередньо оновлювати кожен елемент у списку prices
, використовується range(len(prices))
для ітерації за індексами. Це дозволяє застосувати коефіцієнт знижки до кожного елемента:
# 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)
Примітка
Формула
prices[cost] -= prices[cost] * discount_factor
еквівалентнаprices[cost] = prices[cost] - prices[cost] * discount_factor
. Вона віднімає частину початкової ціни (визначену знижкою) від самої ціни, фактично застосовуючи знижку.Вираз
cost + 1
у команді виводу коригує індекс так, щоб він починався з1
, а не з0
, що робить його зручнішим для користувача.
Цей метод гарантує, що оригінальний список prices
оновлюється безпосередньо новими, зниженими цінами, і зміни одразу відображаються у програмі всюди, де використовується список prices
.
Swipe to start coding
Оновлення рівнів запасів шляхом об'єднання даних з двох списків: stock_items
та shipment_received
. Результат оновить список stock_items
.
stock_items
іshipment_received
— це списки списків, кожен з яких містить назву продукту та його кількість.- Використання циклу
for
зrange()
іlen()
для ітерації за індексамиstock_items
. - Для кожного продукту додати кількість з поставки до наявного запасу та оновити значення у
stock_items
.
Вимоги до виводу
- Для кожного продукту вивести:
Stock updated for <product_name>: <updated_quantity> units
- Після всіх оновлень вивести:
Final stock quantities:
Stock Items: <stock_items>
Рішення
Дякуємо за ваш відгук!