Pythonische Methode zum Überprüfen, ob eine Bedingung für ein Element einer Liste gilt


110

Ich habe eine Liste in Python und möchte überprüfen, ob Elemente negativ sind. Specman hat die has()Methode für Listen, die Folgendes bewirkt:

x: list of uint;
if (x.has(it < 0)) {
    // do something
};

Wo itist ein Specman-Schlüsselwort, das nacheinander jedem Element der Liste zugeordnet ist?

Ich finde das ziemlich elegant. Ich habe die Python-Dokumentation durchgesehen und konnte nichts Ähnliches finden. Das Beste, was ich mir einfallen lassen konnte, war:

if (True in [t < 0 for t in x]):
    # do something

Ich finde das eher unelegant. Gibt es eine bessere Möglichkeit, dies in Python zu tun?

Antworten:


186

any () :

if any(t < 0 for t in x):
    # do something

Wenn Sie "True in ..." verwenden möchten, machen Sie es zu einem Generatorausdruck, damit kein O (n) -Speicher benötigt wird:

if True in (t < 0 for t in x):

1
Korrektur: Wenn Sie verwenden True in ...möchten, überdenken Sie es und verwenden Sie es anystattdessen.
Aran-Fey


10

Python hat genau für diesen Zweck eine eingebaute any () -Funktion.


Nur 2,5+. Andernfalls müssen Sie eine Funktion erstellen, möglicherweise mit ifilter und Ausnahmen oder bool (set ((x für x if cond))) oder dergleichen.
Gregg Lind

1
Anstelle eines komplizierten ifilter-Dings tun Sie einfach: def any (it): für el darin: if el: return True; Rückkehr Falsch
Rory
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.