Wie kann ich zwei geordnete Listen in Python vergleichen?

103

Wenn ich eine lange Liste habe: myList = [0,2,1,0,2,1]die ich in zwei Listen aufgeteilt habe:

a = [0,2,1]
b = [0,2,1]

Wie kann ich diese beiden Listen vergleichen, um festzustellen, ob sie beide gleich / identisch sind, mit der Einschränkung, dass sie in derselben Reihenfolge sein müssen?

Ich habe Fragen zum Vergleichen von zwei Listen durch Sortieren gesehen, aber in meinem speziellen Fall suche ich nicht nach einem sortierten Vergleich, sondern nach einem identischen Listenvergleich.

Jeremy
quelle

Antworten:

172

Verwenden Sie einfach den klassischen ==Operator:

>>> [0,1,2] == [0,1,2]
True
>>> [0,1,2] == [0,2,1]
False
>>> [0,1] == [0,1,2]
False

Listen sind gleich, wenn Elemente mit demselben Index gleich sind. Die Bestellung wird dann berücksichtigt.

Maxime Lorant
quelle
3
Dies kann den folgenden Fehler mit einer Numpy-Liste zurückgeben:ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
Alex Reynolds
Was @AlexReynolds gesagt hat. Sie müssen mit all(arr1 == arr2)oder testen (arr1 == arr2).all().
Juli
9

Wenn Sie nur überprüfen möchten, ob sie identisch sind oder nicht, a == bsollten Sie bei Berücksichtigung der Bestellung wahr / falsch angeben.

Wenn Sie Elemente vergleichen möchten, können Sie numpy zum Vergleich verwenden

c = (numpy.array(a) == numpy.array(b))

Hier enthält c ein Array mit 3 Elementen, die alle wahr sind (für Ihr Beispiel). Falls die Elemente von a und b nicht übereinstimmen, sind die entsprechenden Elemente in c falsch.

Vasanth
quelle
Und dann überprüfen Sie, ob c.all () True ist
Pulkit Bansal
1

Der Ausdruck a == bsollte den Job machen.

Abhiram
quelle