【Python】やってしまいがちなリストの空判定の書き方

- Python -
2020.07.20
Python[パイソン]

Python PEP-8に準拠しないリストの空判定コードを書いてしまうことが多いので、意図的にこの記事に起こすことで次から気を付けようと思う。

Pythonでやってしまいがちなリストの空判定の書き方

たとえばcheck_listというリストがあったとして、空の時は"エラー!"と表示させたい時。見返すとこんなコードになっていることが多い。

len(check_list) == 0がPythonっぽい書き方ではないようです。

間違い例if len(check_list) == 0:
        print(f'!!! エラー !!!')
    else:
        print('OK')

無意識にこう書いてしまう理由は、「英語のまま読めて理解しやすい」という点に尽きるのかなと。

「もしcheck_listの長さが0に等しいときは」ってもうそのまんま。読みやすい。

Python PEP 8に準拠したリストの空判定の書き方

PEP 8準拠if not check_list:
        print(f'!!! エラー !!!')
    else:
        print('OK')

len関数を使わずにこう書け、ということでした。英語的な読みやすさはさっきより低くなったけど...。

以下、根拠となるPEP 8より引用。空のリストはfalseという事実を利用しろ、とあります。

For sequences, (strings, lists, tuples), use the fact that empty sequences are false:

# Correct:
if not seq:
if seq:

# Wrong:
if len(seq):
if not len(seq):

Not Recommended(推奨しない)ではなく Wrong(誤り)とまで言われてしまいました(T T)

リストの空判定でついlen関数で長さを調べたくなるのが染み付いてしまっているので次から気をつけます。

↑TOP