2012-03-24 16 views
5

リストをブール値にする最も良い方法は何ですか?Pythonのリストのブール値

if self.my_list: 
    return True 
return False 

しかし、十分な、それはニシキヘビです:私はこのように動作するようになっている__nonzero__メソッドを実装するカスタムコンテナを持って

return eval_bool(my_list) 

:私のようなものを探していますか? :)とにかく、私はこのコードは動作が異なりますので、Pythonはif文でリストの値をどのように解釈するか興味があります:

return my_list == True 

J.

答えて

14

だけ使用します。

評価さ
bool(my_list) 

をそれはPythonの「真実性」として真のブール値を返します。

+0

うわー、いかがですか!ありがとう! – galapah

+1

'bool'を使うことができますが、Pythonは' if my_list: 'を呼び出すだけで、' my_list'が 'True'か' False'に評価されるかどうかを判断させます。 –

+0

@SimeonVisser: 'if my_list:Trueを返します\ nreturn False'' 'return bool(my_list)'よりもpythonicですか? – WolframH

2

len(my_list) == 0の場合、falseとして返されます。それ以外の場合は、trueです。書くことが完全にPython的である:

return len(my_list) 

それは整数として返されるが、それ以外の場合はゼロ以外の長さについてtrue、および偽として評価します。

+0

これは整数値を返しますが、ブール値が必要です。 –

+0

それは動作しますが、pep 8に違反します:シーケンス(文字列、リスト、タプル)については、空のシーケンスが偽であるという事実を使用してください。はい:もしそうでなければseq:もしseq:いいえ:len(seq)ならばlen(seq) – luca

関連する問題