Comportement des Listes dans les Fonctions
Explorons le travail avec des listes à l'intérieur des fonctions. Bien que cela ressemble à la manipulation de nombres, il existe quelques détails importants à connaître.
Les listes sont mutables, ce qui signifie que toute modification apportée à une liste à l'intérieur d'une fonction affectera également la liste originale en dehors de la fonction si elle est transmise directement.
Pour éviter cela, il est possible d'utiliser la méthode copy()
avec tout type de données mutable. Cela permet de créer une copie superficielle de la liste, afin de modifier un duplicata plutôt que l'original. Ainsi, les modifications effectuées dans la fonction n'affectent pas la liste originale.
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']
Dans cet exemple, la liste fruits
originale reste inchangée car copy()
a été utilisée. Sans copy()
, la modification de la liste à l'intérieur de la fonction aurait également modifié la liste fruits
originale.
Swipe to start coding
Créer une fonction pour appliquer une remise de 10 % aux prix des produits supérieurs à 2,00 $, sans modifier la liste d'origine.
- Définir une fonction
apply_discount(prices)
qui prend une liste de prix. - À l'intérieur de la fonction, faire une copie de
prices
et l'assigner àprices_copy
. - Utiliser une boucle
for
avec itération par index (range(len(prices_copy))
) pour parcourir la liste copiée. - Si un prix est supérieur à
2.00
, appliquer une remise de 10 %. - Retourner la liste
prices_copy
mise à jour.
Exigences de sortie
- La fonction doit retourner la nouvelle liste avec les prix remisés.
- Afficher le résultat en utilisant :
Updated product prices: <$updated_prices>
Remarque
Utiliser une itération basée sur les index pour s'assurer que la liste est modifiée correctement :
for index in range(len(prices)):
modifie les éléments directement, contrairement àfor price in prices:
.
Solution
Merci pour vos commentaires !