【Python】要素数0を判定する方法
概要
Pythonで条件分岐を記述する際に、要素数が0かどうかを判定したい場合があります。
例えば以下のようなfor文を記述するような場合を考えます。
lists = [[1,2,3],[2,3,4]]
for list in lists:
print(list[1])
>2
>3
これはリストの要素(それぞれも要素)の中のインデックス1の値を表示するコードです。
ただ、このようにリスト内に空のリストが混ざっているような場合はエラーが出ます。
lists = [[1,2,3],[2,3,4],[]]
for list in lists:
print(list[1])
>2
>3
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-32-893ae578b494> in <module>
1 lists = [[1,2,3],[2,3,4],[]]
2 for list in lists:
----> 3 print(list[1])
IndexError: list index out of range
リスト内の空リストについてはインデックス1が存在しないため、index out of rangeのエラーが発生しています。
このような場合に空リストのみ判定する方法について説明します。
空リストの判定
Pythonでは 空リストはFalseの値を持ちます。 つまり、このように記述することで判定ができます。
list_emp = []
if list_emp:
pass
else:
print('This is False')
>This is False
冒頭の例に適用する場合は以下のようになります。
lists = [[1,2,3],[2,3,4],[]]
for list in lists:
if list:
print(list[1])
else:
pass
>This is False
なお、len()を使用して、リストのサイズが0であることを使用して判定することも可能です。
lists = [[1,2,3],[2,3,4],[]]
for list in lists:
if len(list)==0:
pass
else:
print(list[1])
空辞書の判定
辞書型についても同様に空の場合はFalseとなるため、以下のように判定することができます。
dict_emp = {}
if dict_emp:
pass
else:
print('This is False')
>This is False
空タプルの判定
タプルの場合も同様です。
tuple_emp = ()
if tuple_emp :
pass
else:
print('This is False')
>This is False
空文字の判定
空文字についても同様に判定することができます。
str_emp = ''
if str_emp:
pass
else:
print('This is False')
>This is False
まとめ
要素が空のものを判定するには、値がFalseであることを利用することでコードがシンプルになります。