2013-06-21 4 views

Antwort

17

Mmm, wie das?

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

Natürlich müssen Sie klären, was Sie meinen, wenn "list lists match". Obiges wird überprüfen, ob beide Listen die gleichen Elemente in derselben Position haben - das heißt, wenn sie gleich sind.

EDIT:

Die Frage ist nicht klar, lassen Sie uns einige mögliche Interpretationen sehen. Um zu überprüfen, ob alle Elemente in list1 sind auch in list2 dies tun:

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

Oder, etwas zu tun mit jedem Element in list1, die auch in list2 gehört, dies zu tun:

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

Nein, in Python wird geprüft, ob beide Listen _equal_: gleiche Elemente an derselben Position sind.Es ist in Java, wo dies einen Identitätsvergleich bedeuten würde, in Python ist es ein Gleichheitsvergleich –

+0

Danke für die Klärung :) upvoted. –

+0

Actualu ich möchte finden, ob jedes Element in Liste 1 ist dort in Liste 2 oder nicht, wenn es existiert, dann tun Sie etwas mit der Übereinstimmung – user2481309

1

Verwendung any():

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

Ziemlich viel, es durchläuft jedes Element in L2 und wenn irgendein Element in L2 in L1 ist, dann wird es True zurückkehren .

Wenn Sie, ob jedes Element in der anderen Liste sehen wollen, und drucken welche sind und welche nicht:

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

das o würde ignorieren Liste der Listen. –

+0

@MarkusUnterwaditzer Was hat der Auftrag damit zu tun? – TerryA

+1

würde sagen, dass "[1,2,3]" und "[3,2,1]" gleich sind. –

0

Einfache Methode, obwohl nicht unbedingt die effizienteste (mit all() statt any()):

listsEqual = len(list1) == len(list2) and all(list1[i] == list2[i] for i in range(len(list1)) 
Verwandte Themen