##方法
- 1つ目
.py
a = []
if not a:
print("リストは空です")
- 2つ目
.py
a = []
if len(a)==0:
print("リストは空です")
解説
1つ目の方法、2つ目の方法ともに問題なく動作します。
pythonのlistは、空であればFalse、中身が入ってればTrueを返す性質があります。
>>> bool(['A','B','C'])
True
>>> bool([])
False
1つ目の方法はこの性質を使って判定しています。
2つ目の方法は、listの要素数を調べてサイズが0であれば空ということにしています。
stack overflowではどちらの方法が良いかという議論があり、1つ目が優勢です。
理由としては、listのサイズを調べる前に、まずlist変数の真偽を調べるのが先だということです。
またPythonのコーディング規約のPEP8においても1つ目の方法が推奨されています。
2つ目も可読性があって良いとは思います。
追記
- 3つ目
.py
if a == []:
print("リストは空です")
1つ目や2つ目は、list以外にも空の文字列や空のタプルでもTrueを返してしまいます。3つ目の方法では、変数aはlistでなければいけないという条件をつけた上で、空かどうかを判定できます。
ご指摘ありがとうございます!
if a == []:
では、aが空である、かつaがlistである、と2つの条件をチェックできます。
今回のタイトルである「listが空かどうか判定する方法」をより厳密にチェックできて良いと思います。
勉強になりました。追記をいたしました。