Ich entwickle ein Python-Programm, um Namen von Städten in einer Liste von Datensätzen zu erkennen. Der Code, den ich bisher entwickelt habe, ist folgender:
%Vor%Der Code funktioniert gut, um zu erkennen, wenn eine Stadt in der aCities-Liste im Buchhaltungsdatensatz gefunden wird, aber da die Funktion any () nur Wahr oder Falsch zurückgibt. Ich habe Mühe zu erfahren, welche Stadt (Melbourne, Sydney, Perth, Dubai oder London) den Ausgang ausgelöst.
Ich habe versucht mit aCities.index und Queue aber bisher keinen Erfolg.
Sie werden nicht, weil any
nur einen booleschen Wert zurückgibt. Aber Sie können next
verwenden:
Mit dieser Syntax finden Sie die erste city
, die eine Teilzeichenkette der in der Datenbankzeile gespeicherten Beschreibung ist. Wenn es keinen gibt, ist der zweite Parameter z.B. Keine, wird zurückgegeben.
Nein, es ist mit any
möglich. Es ist ein bisschen ein Trick - es "liest lustig" - aber es funktioniert:
oder prägnanter, wenn Sie wirklich nur die Stadt ausdrucken möchten:
%Vor%Es funktioniert aus drei Gründen:
any
stoppt beim ersten wahren (truthigen) Element, and
ist kurzgeschlossen, daher wird not print(city)
nur ausgewertet, wenn city in row[0]
wahr ist, und print
gibt None
zurück, also not print(...)
ist immer True
. PS: Wie @falsetru darauf hinweist, ist in% Python 2.x print
keine Funktion, also müssen Sie zuerst sagen:
Wie gesagt, es funktioniert aus 3 Gründen - Python 3 Gründe;) Oh, warte - das sind 4 Gründe ...
Der Vollständigkeit halber ist hier eine Lösung mit einer Standard-for-Schleife:
%Vor% Dies sollte das gleiche Kurzschlussverhalten wie any
haben, da es bei Erfüllung der Bedingung aus der for-Schleife ausbricht. Der else
-Teil wird ausgeführt, wenn die for-Schleife bis zum Ende läuft, ohne zu brechen, siehe diese Frage .
Obwohl diese Lösung mehr Zeilen verwendet, verwendet sie tatsächlich weniger Zeichen als die anderen Lösungen, da es keinen Aufruf für next(..., None)
gibt, sie nicht die zusätzliche city =
Zuweisung hat und es keine zweite if city is None
(at die Kosten von einem zusätzlichen break
). Wenn die Dinge komplizierter werden, ist es manchmal klarer, die for-Schleife explizit auszugeben und dann einige Generator-Ausdrücke und next
-Anweisungen zusammenzufassen.
Tags und Links python python-2.7