Edited at

[Python] listが空かどうか判定する方法2つ

More than 1 year has passed since last update.


方法


  • 1つ目

a = []

if not a:
print("リストは空です")


  • 2つ目

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つ目

if a == []:

print("リストは空です")

1つ目や2つ目は、list以外にも空の文字列や空のタプルでもTrueを返してしまいます。3つ目の方法では、変数aはlistでなければいけないという条件をつけた上で、空かどうかを判定できます。

ご指摘ありがとうございます!

if a == []:

では、aが空である、かつaがlistである、と2つの条件をチェックできます。

今回のタイトルである「listが空かどうか判定する方法」をより厳密にチェックできて良いと思います。

勉強になりました。追記をいたしました。