Comportamento de Listas em Funções
Vamos explorar o trabalho com listas dentro de funções. Embora seja semelhante ao trabalho com números, existem alguns detalhes importantes a serem considerados.
Listas são mutáveis, o que significa que quaisquer alterações feitas em uma lista dentro de uma função também afetarão a lista original fora da função, se ela for passada diretamente.
Para evitar isso, você pode usar o método copy()
com qualquer tipo de dado mutável. Ao fazer isso, você cria uma cópia superficial da lista, permitindo modificar um duplicado em vez do original. Isso garante que as alterações feitas dentro da função não impactem a 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']
Neste exemplo, a lista original fruits
permanece inalterada porque foi utilizado o copy()
. Sem o copy()
, modificar a lista dentro da função também alteraria a lista original fruits
.
Swipe to start coding
Crie uma função para aplicar um desconto de 10% aos preços dos produtos acima de $2.00, sem alterar a lista original.
- Defina uma função
apply_discount(prices)
que recebe uma lista de preços. - Dentro da função, faça uma cópia de
prices
e atribua aprices_copy
. - Utilize um laço
for
com iteração por índice (range(len(prices_copy))
) para percorrer a lista copiada. - Se um preço for maior que
2.00
, aplique um desconto de 10%. - Retorne a lista
prices_copy
atualizada.
Requisitos de Saída
- A função deve retornar a nova lista com os preços descontados.
- Imprima o resultado usando:
Updated product prices: <$updated_prices>
Observação
Utilize iteração baseada em índice para garantir que a lista seja modificada corretamente:
for index in range(len(prices)):
modifica os elementos diretamente, ao contrário defor price in prices:
.
Solução
Obrigado pelo seu feedback!