2017-04-18 2 views
1

Ich versuche, den Operator AND anzuwenden, um doppelte Bedingungen in Python zu beobachten, aber es scheint nicht wie erwartet zu funktionieren. Hier ist ein Beispiel;Anwenden des AND-Operators auf doppelte Bedingungen

ylist=[(u'it', u'is'), (u'speak', u'of'), (u'of', u'school')] 
slist=['it', 'is', 'of', 'not'] 

[x for x in ylist if (x[0] and x[1]) not in slist] 

output:[(u'of', u'school')] 

Expected output:[(u'speak', u'of'),(u'of', u'school')] 

Vielen Dank für Ihre Vorschläge.

Antwort

1

Sie müssen any verwenden die nicht enthält Test für jedes Element in dem Tupel zu reduzieren:

>>> ylist=[(u'it', u'is'), (u'speak', u'of'), (u'of', u'school')] 
>>> slist=['it', 'is', 'of', 'not'] 
>>> [x for x in ylist if any(e not in slist for e in x)] 
[(u'speak', u'of'), (u'of', u'school')] 
Verwandte Themen