Поведінка Списків у Функціях
Досліджуємо роботу зі списками всередині функцій. Хоча це схоже на роботу з числами, існують деякі важливі особливості.
Списки є змінюваними (mutable), тобто будь-які зміни списку всередині функції також впливають на оригінальний список поза функцією, якщо його передати напряму.
Щоб цього уникнути, можна скористатися методом copy()
для будь-якого змінюваного типу даних. Таким чином створюється поверхнева копія списку, і ви можете змінювати дублікат, а не оригінал. Це гарантує, що зміни у функції не вплинуть на оригінальний список.
def add_strawberry(original_list): list_copy = original_list.copy() # Create a copy of the original list list_copy.append("Strawberry") # Modify the copied list return list_copy # Original list fruits = ["Apple", "Banana", "Cherry"] # Call the function new_fruits = add_strawberry(fruits) # Check the results print("Original list:", fruits) # ['Apple', 'Banana', 'Cherry'] print("Modified list:", new_fruits) # ['Apple', 'Banana', 'Cherry', 'Strawberry']
У цьому прикладі оригінальний список fruits
залишається незмінним, оскільки було використано copy()
. Без copy()
зміни списку всередині функції також змінили б оригінальний список fruits
.
Swipe to start coding
Створення функції для застосування 10% знижки до цін на товари понад $2.00 без зміни початкового списку.
- Визначити функцію
apply_discount(prices)
, яка приймає список цін. - Усередині функції створити копію списку
prices
та присвоїти її зміннійprices_copy
. - Використати цикл
for
з ітерацією за індексом (range(len(prices_copy))
) для проходження по копії списку. - Якщо ціна перевищує
2.00
, застосувати 10% знижку. - Повернути оновлений список
prices_copy
.
Вимоги до виводу
- Функція повинна повертати новий список із цінами зі знижкою.
- Вивести результат за допомогою:
Updated product prices: <$updated_prices>
Примітка
Використовуйте ітерацію за індексом для коректної модифікації списку:
for index in range(len(prices)):
змінює елементи напряму, на відміну відfor price in prices:
.
Рішення
Дякуємо за ваш відгук!