現象
(python3.6)
>>> all([True, False]) False >>> all([True, True]) True >>> all([]) True
えええぇーー
理由
Python のドキュメント に書いてあるけど...
iterable の全ての要素が真ならば (もしくは iterable が空ならば) True を返します。
論理学の「空虚な真」というやつだそうで
引用元より抜粋
より正式なものとして、偽である先行文をともなった条件文に関するものが、比較的明確に定義されたものとしてあります。
...
そうした命題が空虚なものと考えられるのは、先行文が偽であるという事実のために命題の結論部分の真偽について何も推論できなくなるという理由によります。
...
それらのものが真となるのは、実質含意の推論規則上、先行部分が偽である時は(結論の真偽に関わらず)真となると定義されているからなのです。