Wie verkürzt man es (Pythonic)?

8

Ich muss viele Welten überprüfen, wenn sie in String sind ... Code sieht so aus:

%Vor%

Wie macht man es lesbarer und klarer?

    
Pol 30.08.2010, 13:35
quelle

6 Antworten

35

Dies ist eine Möglichkeit:

%Vor%

Referenz: any()

Aktualisierung:

Wenn Sie die Funktion nur dann ausführen möchten, wenn alle Wörter in der Zeichenfolge enthalten sind, können Sie all() anstelle von any() .

Beachten Sie auch, dass dieses Konstrukt keine unnötigen Berechnungen ausführt, da any zurückkehrt, wenn es auf einen true -Wert trifft und ein Generator Ausdruck wird verwendet, um die booleschen Werte zu erstellen. Sie haben also auch eine Art von Kurzschlussauswertung , die normalerweise bei der Auswertung verwendet wird Boolesche Ausdrücke.

    
Felix Kling 30.08.2010, 13:39
quelle
2
%Vor%

Die Schönheit von Python regex es, dass es entweder ein Regex-Objekt zurückgibt (das gibt Informationen darüber, was übereinstimmte) oder None, das als "false" -Wert in einem Test verwendet werden kann.

    
kriss 30.08.2010 13:57
quelle
2

Mit Regex wäre das:

%Vor%     
ondra 30.08.2010 14:01
quelle
1

Hast du Filter angeschaut?

%Vor%

welches dann mit map kombiniert werden kann, um das zu bekommen

%Vor%

BEARBEITEN:

das tut natürlich nicht, was Sie wollen. Geh mit der any Lösung. Aus irgendeinem Grund dachte ich, du wolltest es jedes Mal und nicht nur einmal machen.

    
wheaties 30.08.2010 13:54
quelle
0
%Vor%     
ghostdog74 30.08.2010 13:56
quelle
0

noch ein Weg, dies zu erreichen check = lambda a: any(y for y in ['string_%s'%x for x in xrange(0,10)] if y in a)

print check('hello string_1')

    
shahjapan 17.03.2011 13:14
quelle

Tags und Links