Seite 1 von 1
Verständnisfrage
Verfasst: Freitag 6. Mai 2022, 16:42
von TheNormalGuy
Hallo an alle und ein schönes Wochenende,
ich habe ein Frage zum Verständnis dieses Codes.
Code: Alles auswählen
blockchain = [[1]]
def get_last_blockchain_value():
return blockchain[-1]
def add_value(transaction_amout):
blockchain.append([get_last_blockchain_value(), transaction_amout])
add_value(1)
add_value(3)
add_value(10)
add_value(7)
print(blockchain)
Für was stehen die doppelten [] in dem oben genannten Beispiel?
Ich verstehe den ganzen Code. Nur das eben nicht.
Danke für eure Hilfen!
Re: Verständnisfrage
Verfasst: Freitag 6. Mai 2022, 16:47
von Onomatopoesie
Es wird eine Liste in der Liste erzeugt. Das siehst du später auch in der Ausgabe: Liste in Liste in Liste ...
>>> [[1], [[1], 1], [[[1], 1], 3], [[[[1], 1], 3], 10], [[[[[1], 1], 3], 10], 7]]
Re: Verständnisfrage
Verfasst: Samstag 7. Mai 2022, 13:17
von __blackjack__
@TheNormalGuy: Ergänzend zur Antwort von Onomatopoesie: Man sollte keine globalen Variablen verwenden. Das ist verwirrend das die Funktionen auf magische Weise auf die eine Datenstruktur zugreifen und die eine Funktion sie sogar verändert, ohne dass man das an der Funktionssignatur sehen kann.
Und ich habe das Beispiel mal um eine kleine Änderung der Liste und eine weitere Ausgabe erweitert, damit man sieht, dass das keine vollständig unabhängige Listen sind:
Code: Alles auswählen
#!/usr/bin/env python3
def get_last_value(blockchain):
return blockchain[-1]
def add_value(blockchain, transaction_amout):
blockchain.append([get_last_value(blockchain), transaction_amout])
def main():
blockchain = [[1]]
for value in [1, 3, 10, 7]:
add_value(blockchain, value)
print(blockchain)
blockchain[0][0] = 42
print(blockchain)
if __name__ == "__main__":
main()
Ausgabe:
Code: Alles auswählen
[[1], [[1], 1], [[[1], 1], 3], [[[[1], 1], 3], 10], [[[[[1], 1], 3], 10], 7]]
[[42], [[42], 1], [[[42], 1], 3], [[[[42], 1], 3], 10], [[[[[42], 1], 3], 10], 7]]