【Pythonリスト】「空」判定
listが空かどうかを調べる方法
方法とサンプル(目次)
pythonのlist
は、空であればFalse
、中身が入ってればTrue
を返す性質がある。
下記3つの方法どれでも判定可能。
not
構文で判定
my_list = []
if not my_list:
print("my_list is empty. my_listは空です")
else:
print("my_list is not empty. my_listは空です")
空list
で判定
my_list = []
if my_list == []:
print("my_list is empty. リストは空です")
else:
print("my_list is not empty. my_listは空です")
組み込み関数「len()
」で判定
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 --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
を使用した方が速い。