Mehrfache Wertprüfungen mit dem Operator 'in' (Python)

7
%Vor%

... funktioniert wie erwartet, aber was ist, wenn ich mehrere Strings wie folgt überprüfen muss:

%Vor%

... scheint nicht zu funktionieren.

    
3zzy 22.02.2010, 05:12
quelle

5 Antworten

20
%Vor%     
Ignacio Vazquez-Abrams 22.02.2010, 05:13
quelle
2

Wenn Sie den Ausdruck so lesen

%Vor%

Das Problem wird offensichtlich. Was passiert, ist, dass 'string1' zu True ausgewertet wird, so dass der Rest des Ausdrucks kurzgeschlossen ist.

Der lange Weg, es zu schreiben, ist dies

%Vor%

Was ein wenig repetitiv ist, in diesem Fall ist es besser, any() wie in Ignacios Antwort

zu verwenden     
John La Rooy 22.02.2010 05:21
quelle
1
%Vor%

Wäre das in Ordnung für das, was Sie tun müssen?

    
Eric Bannatyne 22.02.2010 05:17
quelle
1

or verhält sich nicht so. 'string1' or 'string2' or 'string3' in line ist gleichbedeutend mit ('string1') or ('string2') or ('string3' in line) , was immer wahr (tatsächlich, 'string1' ) zurückgibt.

Um das gewünschte Verhalten zu erhalten, können Sie if any(s in line for s in ('string1', 'string2', 'string3')): sagen.

    
Mike Graham 22.02.2010 05:17
quelle
0

Verwenden von map und lambda

%Vor%

und hochrangige Funktion

%Vor%     
Ho0ony 29.03.2017 06:47
quelle

Tags und Links