リストは、Python が提供する最もよく使われる4つのデータ構造の1つです。その機能性、拡張性、使いやすさから、様々なタイプの機能の実装に有用です。
Pythonのリストには、いくつかの興味深い特徴があります。
-
- 変動性 – 変化できることを意味し、そこから簡単にエントリを追加したり削除したりできることを意味します。これはPythonのリストとタプルの主な違いです。
-
- 反復性 – 反復できる(リスト内のすべての要素を順番に処理できる)。
ここで注目するのは、反復可能性という属性です。反復可能なオブジェクト(この場合はリスト)を扱うときに重要なのは、反復するものがあるかどうかを確認することです。適切に処理されないと、これは多くの望ましくないエラーにつながる可能性があります。
Pythonはリストが空かどうかをチェックするために、暗黙的なものと明示的なものなど様々な方法を提供しています。この記事では、Pythonのリストが空かどうかをチェックする方法について説明します。
-
len()
関数を使う - 比較演算子で
len()
を使う - 空リストとの比較
- Pep-8 推奨スタイル (最も一般的で推奨される)
-
bool()
関数を使う
len()` 関数の使用
リストが空かどうかを調べるために len()
関数を使うのもテクニックの1つです。
py_list = []
"""
Here len() returns 0, which is
implicitly converted to false
"""
if len(py_list):
print('The list is not empty')
else:
print('T list is empty')
出力
出力
len(py_list)が実行されるとゼロを生成し、それは暗黙のうちにブール値である
False` にキャストされます。したがって、空のリストがあった場合、プログラムは else ブロックにリダイレクトされます。
この方法は簡単そうに見えますが、初心者にとってはそれほど直感的なものではありません。
len() と比較演算子の併用
このテクニックは上記のものと似ていますが、より明示的で理解しやすくなっています。そのため、Pythonやコーディングそのものに慣れていない人は、通常この方法をより直感的に理解できると思います。
List is empty
上記のコードでは、len(py_list) == 0
はリストが空の場合に真となり、elseブロックにリダイレクトされます。これは 0
が False
に変換されることに依存するのではなく、他の値も設定することができます。他のすべての正の値は True
に変換されます。
空リストとの比較
この方法も非常にシンプルで、空のリストと比較するため、初心者に適しています。
if len(py_list) == 0:
print('List is empty')
else:
print('List not empty')
ここでも比較演算を使って、あるリストと別のリスト(空リスト)を比較し、両方が空なら if
ブロックが実行されます。
Pep-8推奨スタイル
if py_list == []:
print('List is empty')
else:
print('List is not empty')
ここでは、「真偽値検査」について見ていきましょう。公式ドキュメントにはこう書かれています。
以下は、偽とみなされる組み込みオブジェクトのほとんどである。
* false と定義されている定数。falseと定義された定数: NoneとFalse。
* 任意の数値型のゼロ。0, 0.0, 0j, 小数(0), 分数(0,1)
空のシーケンスとコレクション。”、()、[]、{}、set()、range(0)
空のリストは、実際にはただの空のコレクションなので、ブール値の False
に変換されます。したがって、py_list
が空の場合、False
に変換されます。
2つ目の文は、 not
が false の状態を true に反転させることを除いて、ほとんど同じです。このアプローチは if(len(list))
アプローチと非常によく似ています。
これは最もクリーンで短い解決策であるため、好ましいアプローチです。
bool()関数の使用
リストが空であるかどうかを確認するには、bool()` 関数を使用することもできます。
#PEP-8 recommended style
if py_list:
print('List is not empty')
if not py_list:
print('List empty')
これは基本的に手動で実装された真偽値テストです。もしリストが空でなければ、この関数は True
を返し、if ブロックが実行されます。
この方法はあまり一般的ではありませんが、Pythonがどのように動作しているかを知っておくことは悪いことではありません。
結論
この記事は、Pythonのリストが空かどうかをチェックする方法についてのすべてでした。様々なテクニックを試すことから始めて、最終的にどのテクニックが有効かを判断するために使用できるいくつかのパラメータを調べました。
Pythonの新しいアップデートが新しいコーディングスタイルを生み出すかもしれないので、これで終わりとは言い切れません。ですから、探求を続け、学び続けることが望ましいのです。