in python, wenn Sie a = b
tun, ein dem Wert von b nicht übernimmt, sondern Referenzen den gleichen Wert von b verwiesen. Um dies zu sehen, machen:
>>> a = {'Test': 42}
>>> b = a
>>> b['Test'] = 24
Was ist nun der Wert von a?
>>> a['Test']
24
Es mit Listen ähnlich ist, so müssen wir einen Weg, um wirklich kopieren eine Liste, und nicht machen einen Verweis, um es zu finden. Eine Möglichkeit besteht darin, die Liste copy = list(list1)
neu zu erstellen oder die Funktionen des Moduls copy
zu verwenden. Aber schließlich ist der einfachste Weg, der schönste, der beste Weg (;)) dafür, jeden Wert der ersten Liste in den anderen zu kopieren, indem man copy = list1[:]
tut. Es benutzt die Slices, hier wird list1 vom Index 0 zum Index len (list1) geschnitten, also wird die ganze list1 zurückgegeben!
Darüber hinaus ist die Slice-Methode etwas schneller: Mit der Methode time.clock() messen Sie die mittlere Ausführungszeit von 1000 Zuweisungen von Listen mit jeweils 10000 zufälligen Ganzzahlen mit Slices, Konstruktor und Deepcopy Die Schnitte sind 15% schneller als die Konstruktormethode und deepcopy ist 4 mal langsamer. Dieser Zeitgewinn ist jedoch vernachlässigbar, wenn kleine Listen verwendet werden: Die Verwendung von copy = list(list_to_copy)
oder copy = list_to_copy[:]
entspricht also den Vorlieben des Entwicklers.
Schließlich vergessen wir oft die list.copy Methode, die schneller zu sein scheint! Tatsächlich ist es sogar 13% schneller als die Slice-Methode!
beziehen Sie sich auf eine bestimmte Sprache? –
mögliche Duplikate von [Wie klonen oder kopieren Sie eine Liste in Python?] (Http://stackoverflow.com/questions/2612802/how-to-clone-or-copy-a-list-in-python) –
möglich duplizieren of [Erklären Pythons Slice-Notation] (http://stackoverflow.com/questions/509211/explain-pythons-slice-notation) – LittlePanda