2012-03-24 16 views
5

jaki jest najlepszy sposób na przekształcenie listy w wartość bool? Szukam czegoś podobnego:wartość bool listy w Pythonie

return eval_bool(my_list) 

mam niestandardową pojemnika, w którym zaimplementować metodę __nonzero__ która ma działać tak:

if self.my_list: 
    return True 
return False 

Ale czy to wystarczy pythonic? :) W każdym razie, jestem ciekaw jak Python interpretuje wartość listy w rachunku if ponieważ ten kod działa inaczej:

return my_list == True 

J.

Odpowiedz

14

Wystarczy użyć:

bool(my_list) 

która ocenia to jako "prawdomówność" Pythona i zwraca prawdziwą wartość logiczną.

+0

Wow, jak łatwo! Dzięki! – galapah

+1

Podczas gdy 'bool' może być użyty, to bardziej Pythonicznie wystarczy wywołać' if my_list: 'i pozwolić Pythonowi ustalić, czy' moja_lista' powinna być równa "Prawda" czy "False". –

+0

@SimeonVisser: Dlaczego 'if moja_lista: return True \ nreturn False' jest bardziej pythonic niż' return bool (my_list) '? – WolframH

2

Jeśli len(my_list) == 0 zostanie zwrócony jako false, w przeciwnym razie będzie to true. Jest całkowicie pythonic napisać:

return len(my_list) 

który chociaż jest ona zwracana w postaci liczby całkowitej, ocenia jako true o niezerowej długości i false w przeciwnym wypadku.

+0

To jednak zwróci wartość całkowitą, a my chcemy wartości logicznej. –

+0

działa, ale narusza pep 8: W przypadku sekwencji (ciągów, list, krotek) należy użyć faktu, że puste sekwencje są fałszywe. Tak: jeśli nie seq: if seq: No: if len (seq) if not len ​​(seq) – luca