Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich ein 2D-Array in Python effizient initialisieren?

Wie kann ich ein 2D-Array in Python effizient initialisieren?

Linda Hamilton
Linda HamiltonOriginal
2024-12-04 17:35:12956Durchsuche

How Can I Efficiently Initialize a 2D Array in Python?

Initialisieren eines zweidimensionalen Arrays in Python

Bei der Arbeit mit Python kann es vorkommen, dass Sie ein zweidimensionales Array initialisieren müssen. oder eine „Liste von Listen“. Obwohl das bereitgestellte Code-Snippet, das verschachtelte Schleifen verwendet, die Aufgabe erfüllt, ist es möglicherweise nicht der effizienteste Ansatz.

Vereinfachte Initialisierung

Eine prägnantere Methode zur Initialisierung eines Zwei- Das dimensionale Array erfolgt durch Listenverständnis:

t = [[0] * 3 for i in range(3)]

Dieser Code initialisiert ein 3x3-Array, bei dem alle Elemente auf gesetzt sind 0.

Ein Warnhinweis

Obwohl es praktisch erscheinen mag, kann die Verwendung von [[v] * n] * n zum Initialisieren eines Arrays zu unerwartetem Verhalten führen. Wie im folgenden Code gezeigt, erstellt dieser Ansatz Kopien derselben Listenreferenz, was dazu führt, dass Referenzen im gesamten Array gemeinsam genutzt werden:

a = [[0] * 3] * 3
a[0][0] = 1
print(a)  # Output: [[1, 1, 1], [1, 1, 1], [1, 1, 1]]

Anders als erwartet werden alle Elemente des Arrays zu 1. Dies liegt daran, dass jedes Unterliste enthält einen Verweis auf die ursprüngliche Liste, und jede Änderung an einem Element wirkt sich auf das gesamte Array aus.

Zusammenfassend lässt sich sagen, dass für die Initialisierung zweidimensionaler Arrays in Python der Einfachheit halber das Listenverständnis verwendet wird Vermeiden Sie die Verwendung von [[v] * n] * n aufgrund von Problemen bei der Referenzfreigabe.

Das obige ist der detaillierte Inhalt vonWie kann ich ein 2D-Array in Python effizient initialisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn