Comportamiento de Listas en Funciones
Exploremos el trabajo con listas dentro de funciones. Aunque es similar a trabajar con números, existen algunos detalles importantes a tener en cuenta.
Las listas son mutables, lo que significa que cualquier cambio realizado en una lista dentro de una función también afectará a la lista original fuera de la función si se pasa directamente.
Para evitar esto, se puede utilizar el método copy()
con cualquier tipo de dato mutable. Al hacerlo, se crea una copia superficial de la lista, permitiendo modificar un duplicado en lugar del original. Esto asegura que los cambios realizados dentro de la función no afecten a la lista original.
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']
En este ejemplo, la lista original fruits
permanece sin cambios porque se utilizó copy()
. Sin copy()
, modificar la lista dentro de la función también habría cambiado la lista original fruits
.
Swipe to start coding
Crear una función para aplicar un descuento del 10% a los precios de productos superiores a $2.00, sin modificar la lista original.
- Definir una función
apply_discount(prices)
que reciba una lista de precios. - Dentro de la función, hacer una copia de
prices
y asignarla aprices_copy
. - Utilizar un bucle
for
con iteración por índice (range(len(prices_copy))
) para recorrer la lista copiada. - Si un precio es mayor que
2.00
, aplicar un descuento del 10%. - Devolver la lista actualizada
prices_copy
.
Requisitos de salida
- La función debe devolver la nueva lista con los precios descontados.
- Imprimir el resultado usando:
Updated product prices: <$updated_prices>
Nota
Utilizar iteración basada en índices para asegurar que la lista se modifique correctamente:
for index in range(len(prices)):
modifica los elementos directamente, a diferencia defor price in prices:
.
Solución
¡Gracias por tus comentarios!