Jak mogę porównać dwie uporządkowane listy w Pythonie?


107

Jeśli mam jedną długą listę: myList = [0,2,1,0,2,1]podzielę się na dwie listy:

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

jak mogę porównać te dwie listy, aby sprawdzić, czy są równe / identyczne, z zastrzeżeniem, że muszą być w tej samej kolejności?

Widziałem pytania proszące o porównanie dwóch list poprzez ich sortowanie, ale w moim konkretnym przypadku nie sprawdzam posortowanego porównania, ale identyczne porównanie list.

Odpowiedzi:


177

Po prostu użyj klasycznego ==operatora:

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

Listy są równe, jeśli elementy w tym samym indeksie są równe. Uwzględniane jest wówczas zamówienie.


3
Może to zwrócić następujący błąd z listą numpy:ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
Alex Reynolds

Co powiedział @AlexReynolds. Musisz przetestować z all(arr1 == arr2)lub (arr1 == arr2).all().
Julio

@Alex To tablica, a nie lista. Oba są uporządkowanymi typami danych, ale koncepcyjnie różnią się. Akcja zastosowana do tablicy jest stosowana do wszystkich jej elementów, ale to samo nie dotyczy list.
wjandrea

11

Jeśli chcesz po prostu sprawdzić, czy są identyczne, czy nie, a == bpodaj wartość true / false z uwzględnieniem kolejności.

Jeśli chcesz porównać elementy, możesz użyć numpy do porównania

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

Tutaj c będzie zawierało tablicę z 3 elementami, z których wszystkie są prawdziwe (na przykład). W przypadku niezgodności elementów a i b, odpowiadające im elementy w c będą fałszywe.


A następnie sprawdź, czy c.all () jest True
Pulkit Bansal

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.