[PYTHON] Seien Sie vorsichtig, wenn Sie einem Array ein Array hinzufügen

Das wusste ich nicht...

JavaScript

const data_list = [];
let data = [];
data[0] = 0;
data[1] = 1;
data[2] = 2;
data_list.push(data);
console.log('data:', data); // [0, 1, 2]
console.log('data_list:', data_list); // [[0, 1, 2]]

// data = [];
data[0] = 3;
data[1] = 4;
data[2] = 5;
data_list.push(data);
console.log('data:', data); // [3, 4, 5]
console.log('data_list:', data_list); // [[3, 4, 5], [3, 4, 5]]

Python

data_list = []
data = [0, 0, 0]
data[0] = 0
data[1] = 1
data[2] = 2
data_list.append(data)
print ('data: ', data) # [0, 1, 2]
print ('data_list: ', data_list) # [[0, 1, 2]]

# data = [0, 0, 0]
data[0] = 3
data[1] = 4
data[2] = 5
data_list.append(data)
print ('data: ', data) # [3, 4, 5]
print ('data_list: ', data_list) # [[3, 4, 5], [3, 4, 5]]

Wenn Sie darüber nachdenken, scheint es offensichtlich, aber da die Adressen des Arrays, das beim ersten Mal hinzugefügt wurde, und des Arrays, das beim zweiten Mal hinzugefügt wurde, gleich sind, haben sie zum Zeitpunkt der Referenzierung denselben Wert. Um das erwartete Ergebnis "[[0, 1, 2], [3, 4, 5]]" auszugeben, muss das Array zu einem geeigneten Zeitpunkt initialisiert werden.

Überschreiben Sie den Inhalt des Arrays nicht, indem Sie aufhören zu denken. Auch wenn Sie eine Skriptsprache verwenden, sollten Sie beim Umgang mit Arrays auf den Speicher achten.

Übrigens habe ich die Daten, die mit dieser Methode im Experiment gesammelt werden sollten, im Dunkeln vergraben (weinen) (dumm)

Recommended Posts

Seien Sie vorsichtig, wenn Sie einem Array ein Array hinzufügen
Seien Sie vorsichtig, wenn Sie pandas.DataFrame Series als Spalte zuweisen
Einstellungen beim Hinzufügen einer Festplatte unter Linux
Seien Sie vorsichtig, wenn Sie CakePHP3 mit PHP7.2 ausführen
[Python-Memo] Seien Sie vorsichtig, wenn Sie ein zweidimensionales Array erstellen (Liste der Listen).
Achten Sie beim Erstellen einer Bildmaske mit Numpy auf den Typ
Fügen Sie einem leeren Array mit numpy Zeilen hinzu
Ich möchte OREMO mit setParam sein!
Seien Sie vorsichtig, wenn Sie mit gzip-komprimierten Textdateien arbeiten
Seien Sie vorsichtig, wenn Sie die Eigenvektoren einer Matrix unterscheiden
Seien Sie vorsichtig beim Lesen von Daten mit Pandas (geben Sie dtype an)
Dikt in Array konvertieren
Erstellen Sie ein zweidimensionales Array, indem Sie am Ende eines leeren Arrays mit numpy eine Zeile hinzufügen
So konvertieren Sie mit Python [Anwendung] von einem Array in ein Wörterbuch
So tauschen Sie Elemente in einem Array in Python aus und wie kehren Sie ein Array um.
Aufzeichnung der Aktionen, die ausgeführt werden müssen, wenn google_image_download nicht verwendet werden kann
Probleme mit verstümmelten Zeichen beim Drucken eines Arrays mit einer Zeichenfolge, die utf-8 enthält
Stellen Sie Tomcat so ein, dass es automatisch neu gestartet wird, wenn ein OutOfMemoryError ausgelöst wird
Was tun, wenn beim Importieren von _ssl ein Fehler auftritt?
Wie kann doi nützlich sein, wenn man fragt, wie man Code schreibt?
Ich wollte ein Array mit der Subs-Methode von Sympy berechnen
(Hinweis) Punkte, auf die Sie bei der Installation von Scilab unter ArchLinux achten sollten
[Einführung in Udemy Python3 + Application] 51. Seien Sie vorsichtig mit Standardargumenten
So entfernen Sie die "Tags müssen ein Array von Hashes sein." Fehler in Qiita API