【Pythonリスト】「空」判定

listが空かどうかを調べる方法

pythonのlistは、空であればFalse、中身が入ってればTrueを返す性質がある。

下記3つの方法どれでも判定可能。

not構文で判定

python
Copied!
my_list = []
if not my_list:
    print("my_list is empty. my_listは空です")
else:
    print("my_list is not empty. my_listは空です")

listで判定

python
Copied!
my_list = []
if my_list == []:
    print("my_list is empty. リストは空です")
else:
    print("my_list is not empty. my_listは空です")

組み込み関数「len()」で判定

python
Copied!
my_list = []
if len(my_list) == 0:
    print("my_list is empty. リストは空です")
else:
    print("my_list is not empty. my_listは空です")

どの判定方法がベストか?

同じ判定方法でも実行速度が速いほど良い。

timeitモジュールを使用してパフォーマンスを測定してみる。

色んな使われ方をすることを前提として、ラムダ「lambda」関数で空リストを構築後、100回繰り返し判定して、どの方法が速いか検証。

python
Copied!
$ python --version
Python 3.11.2
$ python
>>> import timeit
>>> min(timeit.repeat(lambda: len([]) == 0, repeat=100))
0.10433917003683746
>>> min(timeit.repeat(lambda: [] == [], repeat=100))
0.0996236470527947
>>> min(timeit.repeat(lambda: not [], repeat=100))
0.07251684099901468
>>> exit()

結論

空のlist判定は、組み込み関数lenを使用するよりも、構文notを使用した方が速い。

目次
上へ