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.

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.


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.


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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.