2013-06-21 15 views

risposta

17

Mmm, in questo modo?

if list1 == list2: # compare lists for equality 
    doStuff()  # if lists are equal, do stuff after that 

Naturalmente, è necessario chiarire cosa si intende per "se i valori di elenco corrispondono". Quanto sopra controllerà se entrambe le liste hanno gli stessi elementi, nella stessa posizione, cioè se sono uguale a.

EDIT:

La questione non è chiara, vediamo alcune possibili interpretazioni. Per verificare se tutti gli elementi list1 sono anche in list2 fare questo:

if all(x in list2 for x in list1): 
    doStuff() 

O fare qualcosa con ogni elemento list1 che appartiene anche a list2, fare questo:

for e in set(list1) & set(list2): 
    doStuff(e) 
+3

No, in Python questo controlla se entrambi gli elenchi sono _equal_: stessi elementi, nella stessa posizione.È in Java, dove ciò significherebbe un confronto di identità, in Python è un confronto di uguaglianza –

+0

Grazie per aver chiarito che :) upvoted. –

+0

In realtà voglio scoprire se ogni elemento nella lista 1 è presente nella lista 2 o no se esiste quindi fare qualcosa con la corrispondenza – user2481309

1

Uso any():

>>> L1 = [1,6] 
>>> L2 = [1] 
>>> any(i in L1 for i in L2) 
True 

Praticamente, si scorre ogni elemento nella L2 e se qualche elemento in L2 è in L1, allora sarà tornare True .

Se volete vedere se ogni articolo è nell'altra lista, e la stampa quali sono e quali non lo sono:

>>> for i in L2: 
...  if i in L1: 
...    print i, "is in L1" 
...  else: 
...    doStuff(i) 
+2

Questa sarebbe ignorare o più delle liste. –

+0

@MarkusUnterwaditzer Cosa c'entra l'ordine? – TerryA

+1

direi che '' [1,2,3] '' e '' [3,2,1] '' sono uguali. –

0

metodo semplice, anche se non necessariamente la più efficiente (utilizzando all() anziché any()):

listsEqual = len(list1) == len(list2) and all(list1[i] == list2[i] for i in range(len(list1)) 
Problemi correlati