Die Beispiele in diesem Artikel beschreiben die Python-Array-Definitionsmethode. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:
Es gibt keine Datenstruktur für Arrays in Python, aber Listen sind Arrays sehr ähnlich, wie zum Beispiel:
a=[0,1,2]
Zu diesem Zeitpunkt: a[0]=0, a[1]=1, a[[2]=2, aber es wirft eine Frage auf, das heißt: Was ist, wenn das Array a von 0 bis 999 definiert werden soll? Dies kann durch a = range(0, 1000) erreicht werden. Oder weggelassen als a = range(1000) Wenn Sie a mit einer Länge von 1000 definieren möchten und die Anfangswerte alle 0 sind, dann ist a = [0 für x in range(0, 1000)]
Das Folgende ist eine zweidimensionale Array-Definition:
Direkte Definition:
a=[[1,1],[1,1]]
Hier wird eine 2*2-Zwei definiert -dimensionales Array mit einem Anfangswert von 0 .
Indirekte Definition:
a=[[0 for x in range(10)] for y in range(10)]
Dies definiert ein zweidimensionales 10*10-Array mit einem Anfangswert von 0.
Es gibt auch eine einfachere Methode für wörtliche zweidimensionale Arrays:
b = [[0]*10]*10
Definieren Sie ein 10*10 zweidimensionales Array mit einen Anfangswert von 0 .
Vergleichen Sie mit a=[[0 für x in Bereich(10)] für y in Bereich(10)]: Das Ergebnis von print a==b ist wahr.
Aber nachdem die Definitionsmethode von b anstelle von a verwendet wurde, ging auch das Programm, das zuvor normal ausgeführt werden konnte, schief. Nach sorgfältiger Analyse wurde der Unterschied festgestellt:
a[0][0 ]=1 , nur a[0][0] ist 1 und die anderen sind alle 0.
Wenn b[0][0]=1, a[0][0], a[1][0], bis a[9,0] alle 1 sind.
Daraus erhalten wir, dass die 10 kleinen eindimensionalen Daten im großen Array alle dieselbe Referenz haben, das heißt, sie zeigen auf dieselbe Adresse.
Daher entspricht b = [[0]*10]*10 nicht unserem herkömmlichen zweidimensionalen Array.
Gleichzeitig wurde getestet: Die Definition von c=[0]*10 hat den gleichen Effekt wie c=[0 für x in range(10)], ohne das gleiche Problem Referenz oben. Es wird geschätzt, dass die Definition von Array c Zu diesem Zeitpunkt wird der Werttyp multipliziert, während im vorherigen b der Typ multipliziert wird, da das eindimensionale Array eine Referenz ist (Ausleihe des Werttyps und des Referenztyps). in C# weiß ich nicht, ob es angemessen ist).
Eine ausführlichere Einführung in Python-Array-Definitionsmethoden und verwandte Artikel finden Sie auf der chinesischen PHP-Website!