Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Einführung in die Python-Array-Definitionsmethode

Detaillierte Einführung in die Python-Array-Definitionsmethode

高洛峰
高洛峰Original
2017-03-06 14:01:492101Durchsuche

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!

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