Nasıl bir liste ve tek bir truthy değer olup olmadığını kontrol edebilir miyim? | Netgez.com
SORU
28 Mayıs 2013, Salı


Nasıl bir liste ve tek bir truthy değer olup olmadığını kontrol edebilir miyim?

Python, olması gereken bir liste varbir ve tekdeğeri (bool(value) is True) truthy. Akıllı bir şekilde bunu kontrol etmek için var mı? Şu anda, sadece liste üzerinde yineleme ve elle kontrol ediyorum:

def only1(l)
    true_found = False
    for v in l:
        if v and not true_found:
            true_found=True
        elif v and true_found:
             return False #"Too Many Trues"
    return true_found

Bu çok kaba ve çok pythonic görünüyor. Zeki bunu yapmak için bir yol var mı?

CEVAP
28 Mayıs 2013, Salı


Ä°thalat gerektirmez

def single_true(iterable):
    i = iter(iterable)
    return any(i) and not any(i)

Alternatif olarak, daha okunabilir bir sürümünü belki de:

def single_true(iterable):
    iterator = iter(iterable)
    has_true = any(iterator) # consume from "i" until first true or it's exhuasted
    has_another_true = any(iterator) # carry on consuming until another true value / exhausted
    return has_true and not has_another_true # True if exactly one true found

Bu:

  • Görünüyor i herhangi bir gerçek deÄŸeri vardır emin olun
  • Bu noktadan bakıldığında iterable diÄŸer gerçek deÄŸeri yoktur emin olmak için devam ediyor

Bunu PaylaÅŸ:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VÄ°DEO

Rastgele Yazarlar

  • ★ByScrapi★ Designs

    ★ByScrapiâ

    27 AÄžUSTOS 2013
  • Floortile83

    Floortile83

    16 Ocak 2010
  • RaquelGamesBR

    RaquelGamesB

    20 HAZÄ°RAN 2009