len()
Python の組み込み関数 len() はオブジェクトのサイズ (要素の数) を返します。引数にはリスト、タプル、range、文字列、バイト列、辞書、集合などを受け取ることができます。
len() を使ってリストの要素を数えてみます。
# PYTHON_LEN_01 # In[1] x = ["a", "b", "c", "d", "e"] # オブジェクトのサイズを取得 print(len(x)) # 5
次は len() に多重配列を渡してみます。
# In[2] x = [["a", "b", "c"], ["d", "e", ["f", "g", "h"]]] # オブジェクトのサイズを取得 print(len(x)) # 2
8 ではなく 2 が出力されました。len() は格納されたオブジェクトの数を返す関数です。上のコードでは、x には、[“a”, “b”, “c”] と [“d”, “e”, [“f”, “g”, “h”]] という 2 つのオブジェクトが格納されていると考えます。
len() に文字列を渡すと文字数が返ります。
# In[3] # 文字列を定義 x = "Python" # 文字数をカウント print(len(x)) # 6
拡張パッケージで定義されたオブジェクトの中にも、len() に渡せるように設計されているものがあります。たとえば、NumPy の配列 (ndarray) を len() に渡して要素数を調べることができます。
# PYTHON_LEN_02 # In[1] import numpy as np # arr=[1 2 3 4 5 6 7 8 9] arr = np.arange(1, 10) # 配列の要素数を数える print(len(arr)) # 9
リストと同じように、len() に多次元配列を渡すこともできます。
たとえば、次のような 2 次元配列 arr を定義します。
# In[2] # 2次元配列を定義 arr = np.arange(1, 10).reshape(3, 3) print(arr) # [[1 2 3] # [4 5 6] # [7 8 9]]
この場合、len(arr) は arr に格納されている 1 次元配列の数をカウントします。
# In[3] # arrに格納されたオブジェクトを数える len(arr) # 3
len() はクラスに定義された特殊メソッド __len__() を呼び出す関数です。すなわち、クラスごとに格納されたオブジェクトを数えるメソッドが __len__() という名前で定義されています。組み込み関数のリストと NumPy の配列では、__len__() の中身は異なるということです。したがって、クラスの中に適当な機能をもつ __len()__ を実装して、インスタンスのサイズを定義できます。
# PYTHON_LEN_03 # In[1] class Object_A: # len()を実装してインスタンスのサイズを10と決める def __len__(self): return 10 x = Object_A() len(x) # 10
コメント
【技術英語の豆知識】len() 関数の len は length の略語です。こんな妙な略し方するのはプログラミング業界ぐらいで、門外漢にとっては「???」でしょうけど、まあとにかく、length の略語なのです。length には「長さ、区分」という意味で、
・length of time (期間)
・at arm’s length (腕を伸ばせば届く所に)
のような使われ方をします。
Python公式ドキュメント英語版では len() を
・length of an object (オブジェクトの大きさ)
と説明しています。