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.