Listenverhalten in Funktionen
Untersuchen wir das Arbeiten mit Listen innerhalb von Funktionen. Obwohl es dem Arbeiten mit Zahlen ähnelt, gibt es einige wichtige Details zu beachten.
Listen sind veränderbar (mutable), was bedeutet, dass alle Änderungen an einer Liste innerhalb einer Funktion auch die ursprüngliche Liste außerhalb der Funktion beeinflussen, wenn sie direkt übergeben wird.
Um dies zu verhindern, kann die Methode copy()
bei jedem veränderbaren Datentyp verwendet werden. Dadurch wird eine flache Kopie der Liste erstellt, sodass Sie eine Kopie statt des Originals ändern. Dies stellt sicher, dass Änderungen innerhalb der Funktion das Original nicht beeinflussen.
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 diesem Beispiel bleibt die ursprüngliche Liste fruits
unverändert, da copy()
verwendet wurde. Ohne copy()
hätte das Ändern der Liste innerhalb der Funktion auch die ursprüngliche Liste fruits
verändert.
Swipe to start coding
Eine Funktion erstellen, die einen 10% Rabatt auf Produktpreise über 2,00 $ anwendet, ohne die ursprüngliche Liste zu verändern.
- Eine Funktion
apply_discount(prices)
definieren, die eine Liste von Preisen entgegennimmt. - Innerhalb der Funktion eine Kopie von
prices
erstellen und dieserprices_copy
zuweisen. - Eine
for
-Schleife mit Index-Iteration (range(len(prices_copy))
) verwenden, um die kopierte Liste zu durchlaufen. - Wenn ein Preis größer als
2.00
ist, einen 10% Rabatt anwenden. - Die aktualisierte Liste
prices_copy
zurückgeben.
Ausgabebedingungen
- Die Funktion soll die neue Liste mit rabattierten Preisen zurückgeben.
- Das Ergebnis ausgeben mit:
Updated product prices: <$updated_prices>
Hinweis
Indexbasierte Iteration verwenden, um die Liste korrekt zu verändern:
for index in range(len(prices)):
verändert Elemente direkt, im Gegensatz zufor price in prices:
.
Lösung
Danke für Ihr Feedback!