ちゃんとした理由があるのはわかっていますが、どのような理由があるのか知りたいですか?
>>> print all([])
True
all() が iterable のすべての項目が「True」に評価されるかどうかをチェックすることを意図しており、空のリストが False に評価されることがわかっている場合
>>> bool([])
False
では、空のリストに対して all() が True を返すのはなぜでしょうか?
<編集>
私はすでにドキュメントを読み、実装を知っています
def all(iterable):
for element in iterable:
if not element:
return False
return True
しかし、問題は、なぜそうしないのかということです。
def all(iterable):
if not iterable:
return False
for element in iterable:
if not element:
return False
return True
これには論理がありますか?完了したタスクのリストがある場合
today_todo_status = [task.status for task in my_todo if task.date == today]
can_i_go_home = all(today_todo_status)
わかりました。上記の架空の例では、タスクがない場合は本当に理にかなっているので、家に帰ることができます。
しかし、他のケースもあり、todo リストのために all() が作成されたとは思いません.. 笑
< /編集 >