Como posso comparar duas listas ordenadas em python?

105

Se eu tiver uma longa lista: myList = [0,2,1,0,2,1]divido em duas listas:

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

como posso comparar essas duas listas para ver se ambas são iguais / idênticas, com a restrição de que devem estar na mesma ordem?

Já vi perguntas pedindo para comparar duas listas classificando-as, mas, no meu caso específico, não estou verificando uma comparação classificada, mas uma comparação de lista idêntica.

Jeremy
fonte

Respostas:

175

Basta usar o ==operador clássico :

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

As listas são iguais se os elementos no mesmo índice forem iguais. O pedido é levado em consideração então.

Maxime Lorant
fonte
3
Isso pode retornar o seguinte erro com uma lista numpy:ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
Alex Reynolds
O que @AlexReynolds disse. Você tem que testar com all(arr1 == arr2)ou (arr1 == arr2).all().
Julio
10

Se você deseja apenas verificar se eles são idênticos ou não, a == bdeve fornecer verdadeiro / falso com o pedido levado em consideração.

Caso queira comparar elementos, você pode usar numpy para comparação

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

Aqui, c conterá uma matriz com 3 elementos, todos verdadeiros (por exemplo). No caso de os elementos de aeb não coincidirem, os elementos correspondentes em c serão falsos.

Vasanth
fonte
E então verifique se c.all () é verdadeiro
Pulkit Bansal
2

A expressão a == bdeve fazer o trabalho.

Abhiram
fonte