この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
この記事はクイズのように使ってください。最初は問題を読んで解答を想像してみてください、その後に解答と説明も用意しています。
今週はall関数についての記事です。all関数にiterable(list, tupleなど)を渡してboolが返されます。全ての値はTrueに評価されたらallもTrueを返して、1つ以上の値がFalseになったらallはFalseを返します。
>>> all([True, True, True])
True
>>> all([True, False, True])
False
問題:出力はなんでしょうか?
>>> all([])
#1
>>> all([[]])
#2
>>> all([[[]]])
#3
解答
#1 True
#2 False
#3 True
説明
allのコードは以下のようにです
def all(iterable):
for element in iterable:
if not element:
return False
return True
#1 iterableは空っぽの場合、forに入らず、直ぐTrueを返します。
#2 iterableには空っぽリストが入っていたらforのif not elementはTrueになって、return Falseが実行されます。
#3 iterableに[[]]が入っています。Pythonでlistの長さは1以上の場合、boolの評価はTrueになります。if not elementはFalseなので、forから出てTrueを返します。
>>> if []:
... print('empty list')
...
>>> if [[]]:
... print('list with 1 value (empty list)')
list with 1 value (empty list)
注意
allへ渡す値に気を付けてください