Bir listenin herhangi bir öğesi için bir koşulun geçerli olup olmadığını kontrol etmenin Pythonic yolu


112

Python'da bir listem var ve herhangi bir öğenin negatif olup olmadığını kontrol etmek istiyorum. Specman, has()listeler için şu özelliklere sahiptir :

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

itSırayla listenin her bir öğesiyle eşlenen bir Specman anahtar sözcüğü nerede ?

Bunu oldukça zarif buluyorum. Python belgelerine baktım ve benzer bir şey bulamadım. Bulabildiğim en iyi şey şuydu:

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

Bunu oldukça uygunsuz buluyorum. Bunu Python'da yapmanın daha iyi bir yolu var mı?

Yanıtlar:


188

herhangi () :

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

Ayrıca, "True in ..." kullanacaksanız, onu bir jeneratör ifadesi yapın, böylece O (n) hafızasını kullanmasın:

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

1
Düzeltme: Kullanacaksanız True in ..., yeniden düşünün ve kullanın any.
Aran-Fey


10

Python, tam olarak bu amaç için herhangi bir () işlevine sahiptir.


Yalnızca 2.5+. Aksi takdirde, ifilter ve istisnalar veya bool (set ((x for x if cond))) veya benzeri bir işlev yapmanız gerekir.
Gregg Lind

1
Karmaşık bir ifilter şeyinden ziyade, şunu yapın: herhangi bir (it): for el in it: if el: return True; Dönüş Yanlış
Rory
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.