Come posso confrontare due elenchi ordinati in Python?


105

Se ho una lunga lista: myList = [0,2,1,0,2,1]che ho diviso in due liste:

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

come posso confrontare questi due elenchi per vedere se sono entrambi uguali / identici, con il vincolo che devono essere nello stesso ordine?

Ho visto domande che chiedono di confrontare due elenchi ordinandoli, ma nel mio caso specifico, non sto verificando un confronto ordinato, ma un confronto di elenchi identico.

Risposte:


175

Basta usare l' ==operatore classico :

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

Le liste sono uguali se gli elementi con lo stesso indice sono uguali. L'ordine viene quindi preso in considerazione.


3
Questo può restituire il seguente errore con una lista numpy:ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
Alex Reynolds

Cosa ha detto @AlexReynolds. Devi testare con all(arr1 == arr2)o (arr1 == arr2).all().
Julio

10

Se vuoi solo controllare se sono identici o meno, a == bdovresti darti vero / falso con l'ordinamento preso in considerazione.

Nel caso in cui desideri confrontare gli elementi, puoi utilizzare numpy per il confronto

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

Qui, c conterrà un array con 3 elementi che sono tutti veri (per il tuo esempio). Nel caso in cui gli elementi di aeb non corrispondano, gli elementi corrispondenti in c saranno falsi.


E poi controlla se c.all () è vero
Pulkit Bansal

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.