Detaillierte Einführung in die Python-Array-Definitionsmethode

高洛峰
Freigeben: 2017-03-06 14:01:49
Original
2110 Leute haben es durchsucht

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]
Nach dem Login kopieren

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]]
Nach dem Login kopieren

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)]
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!