Antworten:
Ja, die Reihenfolge der Elemente in einer Python-Liste bleibt bestehen.
def fn_1(): lst = [] lst.append(1) lst.append(2) return lstund def 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
list1 = [0, 1, 2, 3, 4]
list2 = [5, 6, 7, 8, 9]
Dann
list1 + list2
Ist das gleiche wie
[0, 1, 2, 3, 4] + [5, 6, 7, 8, 9]
Welches bewertet zu
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Ähnlich wie
"abdcde" + "fghijk"
Produziert
"abdcdefghijk"
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 : [].
mySet = {a, b, c, c}
Garantiert keine Bestellung, aber die Liste:
myList = [a, b, c]
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
>>> a = [[1], [2], [3]]
>>> a[0].append(7)
>>> a
[[1, 7], [2], [3]]
Hier habe ich den ersten Eintrag von geändert a(ich habe ihn hinzugefügt 7). 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]und x.append(a)ist nicht dasselbe. Der zweite mutiert x, und der erste erstellt eine neue Liste und weist sie zu x. Um den Unterschied zu erkennen, versuchen Sie es mit Einstellungen, y = xbevor Sie etwas hinzufügen xund versuchen, und sehen Sie sich den Unterschied an, den die beiden ausmachen y.
aList = [1,2,3]
i = 0
for item in aList:
if i<2:
aList.remove(item)
i+=1
eine Liste
[2]
Die Moral besteht darin, beim Ändern einer Liste in einer von der Liste gesteuerten Schleife zwei Schritte auszuführen:
aList=[1,2,3]
i=0
for item in aList:
if i<2:
aList[i]="del"
i+=1
aList
['del', 'del', 3]
for i in range(2):
del aList[0]
aList
[3]