Wenn ich den folgenden Python-Code habe
>>> x = []
>>> x = x + [1]
>>> x = x + [2]
>>> x = x + [3]
>>> x
[1, 2, 3]
Wird x
garantiert immer sein [1,2,3]
, oder sind andere Ordnungen der Zwischenelemente möglich?
Ja, die Reihenfolge der Elemente in einer Python-Liste bleibt bestehen.
def fn_1(): lst = [] lst.append(1) lst.append(2) return lst
unddef fn_2(): print(fn_1())
wird die Reihenfolge IMMER gleich sein, unabhängig davon, wie oft oder wo immer ich fn_1 () verwende?Kurz gesagt, ja, die Reihenfolge bleibt erhalten. In Kürze:
Im Allgemeinen gelten die folgenden Definitionen immer für Objekte wie Listen:
Eine Liste ist eine Sammlung von Elementen, die doppelte Elemente enthalten können und eine definierte Reihenfolge haben, die sich im Allgemeinen nur ändert, wenn dies ausdrücklich vorgesehen ist. Stapel und Warteschlangen sind beide Arten von Listen, die ein spezifisches (häufig eingeschränktes) Verhalten zum Hinzufügen und Entfernen von Elementen bieten (Stapel sind LIFO, Warteschlangen sind FIFO). Listen sind praktische Darstellungen von Listen von Dingen. Eine Zeichenfolge kann als Liste von Zeichen betrachtet werden, da die Reihenfolge wichtig ist (
"abc" != "bca"
) und Duplikate im Inhalt der Zeichenfolge durchaus zulässig sind (vorhanden sein"aaa"
können und!= "a"
).Ein Satz ist eine Sammlung von Elementen, die keine Duplikate enthalten können und eine unbestimmte Reihenfolge haben, die sich im Laufe der Zeit ändern kann oder nicht. Sets stellen weniger Listen von Dingen dar, als vielmehr das Ausmaß einer bestimmten Auswahl von Dingen. Die interne Struktur der Menge, wie ihre Elemente relativ zueinander gespeichert werden, soll normalerweise keine nützlichen Informationen vermitteln. In einigen Implementierungen werden Mengen immer intern sortiert. In anderen Fällen ist die Reihenfolge einfach undefiniert (normalerweise abhängig von einer Hash-Funktion).
Sammlung ist ein Oberbegriff für jedes Objekt, das zum Speichern einer (normalerweise variablen) Anzahl anderer Objekte verwendet wird. Sowohl Listen als auch Sets sind eine Art Sammlung. Tupel und Arrays gelten normalerweise nicht als Sammlungen. Einige Sprachen betrachten Karten (Container, die Assoziationen zwischen verschiedenen Objekten beschreiben) ebenfalls als eine Art Sammlung.
Dieses Namensschema gilt für alle mir bekannten Programmiersprachen, einschließlich Python, C ++, Java, C # und Lisp (wobei Listen, deren Reihenfolge nicht eingehalten wird, besonders katastrophal wären). Wenn jemand weiß, wo dies nicht der Fall ist, sagen Sie es einfach und ich werde meine Antwort bearbeiten. Beachten Sie, dass bestimmte Implementierungen möglicherweise andere Namen für diese Objekte verwenden, z. B. Vektor in C ++ und Flex in ALGOL 68 (beide Listen; Flex ist technisch gesehen nur ein anpassbares Array).
Wenn in Ihrem Fall aufgrund der Besonderheiten der Funktionsweise des
+
Zeichens noch Verwirrung herrscht , wissen Sie einfach, dass die Reihenfolge für Listen wichtig ist. Wenn kein Grund zu der Annahme besteht , dass dies nicht der Fall ist, können Sie so gut wie immer davon ausgehen, dass Listenoperationen die Reihenfolge beibehalten . In diesem Fall+
verhält sich das Zeichen ähnlich wie bei Zeichenfolgen (die eigentlich nur Listen von Zeichen sind): Es nimmt den Inhalt einer Liste und platziert ihn hinter dem Inhalt einer anderen.Wenn wir haben
Dann
Ist das gleiche wie
Welches bewertet zu
Ähnlich wie
Produziert
quelle
Sie verwechseln 'Sets' und 'Listen'. Ein Set garantiert keine Bestellung, Listen jedoch.
Sätze werden in geschweiften Klammern deklariert :
{}
. Im Gegensatz dazu werden Listen in eckigen Klammern deklariert :[]
.Garantiert keine Bestellung, aber die Liste:
quelle
Ich nehme an, eine Sache, die Sie betreffen könnte, ist, ob sich die Einträge ändern könnten oder nicht, so dass die 2 beispielsweise eine andere Zahl wird. Sie können sich hier beruhigen, denn in Python sind Ganzzahlen unveränderlich , was bedeutet, dass sie sich nach ihrer Erstellung nicht ändern können.
Nicht alles in Python ist jedoch unveränderlich. Listen sind beispielsweise veränderbar - sie können sich nach dem Erstellen ändern. Zum Beispiel, wenn Sie eine Liste von Listen hatten
Hier habe ich den ersten Eintrag von geändert
a
(ich habe ihn hinzugefügt7
). Man könnte sich vorstellen, Dinge herumzumischen und hier unerwartete Dinge zu bekommen, wenn man nicht aufpasst (und dies passiert in der Tat jedem, wenn er auf die eine oder andere Weise mit dem Programmieren in Python beginnt; suchen Sie einfach auf dieser Site nach "Ändern einer Liste während des Durchlaufens" es "Dutzende von Beispielen zu sehen).Es ist auch erwähnenswert, dass
x = x + [a]
undx.append(a)
ist nicht dasselbe. Der zweite mutiertx
, und der erste erstellt eine neue Liste und weist sie zux
. Um den Unterschied zu erkennen, versuchen Sie es mit Einstellungen,y = x
bevor Sie etwas hinzufügenx
und versuchen, und sehen Sie sich den Unterschied an, den die beiden ausmacheny
.quelle
aList = [1,2,3]
i = 0
eine Liste
[2]
Die Moral besteht darin, beim Ändern einer Liste in einer von der Liste gesteuerten Schleife zwei Schritte auszuführen:
quelle
Ja, Listen und Tupel werden immer bestellt, Wörterbücher nicht
quelle