@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]]