Course Content
Introduction to Python (copy)
Introduction to Python (copy)
List Behavior in Functions
Let's explore working with lists inside functions. While it's similar to working with numbers, there are a few important details to be aware of.
Lists are mutable, meaning that any changes made to a list inside a function will also affect the original list outside the function if passed directly.
To prevent this, you can use the copy()
method with any mutable data type. By doing so, you create a shallow copy of the list, allowing you to modify a duplicate instead of the original. This ensures that changes made within the function don't impact the original list.
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']
In this example, the original fruits
list remains unchanged because copy()
was used. Without copy()
, modifying the list inside the function would have changed the original fruits
list as well.
Swipe to start coding
Create a function to apply a 10% discount to product prices over $2.00, without changing the original list.
- Define a function
apply_discount(prices)
that takes a list of prices. - Inside the function, make a copy of
prices
and assign it toprices_copy
. - Use a
for
loop with index iteration (range(len(prices_copy))
) to go through the copied list. - If a price is greater than
2.00
, apply a 10% discount. - Return the updated
prices_copy
list.
Output Requirements
- The function should return the new list with discounted prices.
- Print the result using:
Updated product prices: <$updated_prices>
Note
Use index-based iteration to ensure the list is modified correctly:
for index in range(len(prices)):
modifies elements directly, unlikefor price in prices:
.
Solution
Thanks for your feedback!
List Behavior in Functions
Let's explore working with lists inside functions. While it's similar to working with numbers, there are a few important details to be aware of.
Lists are mutable, meaning that any changes made to a list inside a function will also affect the original list outside the function if passed directly.
To prevent this, you can use the copy()
method with any mutable data type. By doing so, you create a shallow copy of the list, allowing you to modify a duplicate instead of the original. This ensures that changes made within the function don't impact the original list.
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']
In this example, the original fruits
list remains unchanged because copy()
was used. Without copy()
, modifying the list inside the function would have changed the original fruits
list as well.
Swipe to start coding
Create a function to apply a 10% discount to product prices over $2.00, without changing the original list.
- Define a function
apply_discount(prices)
that takes a list of prices. - Inside the function, make a copy of
prices
and assign it toprices_copy
. - Use a
for
loop with index iteration (range(len(prices_copy))
) to go through the copied list. - If a price is greater than
2.00
, apply a 10% discount. - Return the updated
prices_copy
list.
Output Requirements
- The function should return the new list with discounted prices.
- Print the result using:
Updated product prices: <$updated_prices>
Note
Use index-based iteration to ensure the list is modified correctly:
for index in range(len(prices)):
modifies elements directly, unlikefor price in prices:
.
Solution
Thanks for your feedback!