my_list = [1,2,3,4,5]
len(my_list)
# 5
タプルについても同様です。
my_tuple = (1,2,3,4,5)
len(my_tuple)
# 5
文字列も同様です。文字列は実際には単なる文字の配列です。
my_string = 'hello world'
len(my_string)
# 11
これは、リストやタプルなどのコンテナ型が、パブリックな .length()
メソッドを明示的に実装する必要がないように、意図的にこのようにしたもので、代わりに「魔法の」__len__()
メソッドを実装しているものの len()
をチェックすればよいのです。
確かに、これは冗長に見えるかもしれませんが、長さチェックの実装は、同じ言語であってもかなり異なる可能性があります。あるコレクションの型では .length()
メソッドを使い、別の型では .length
プロパティを使い、さらに別の型では .count()
を使うことも珍しくありません。言語レベルのキーワードがあれば、これらすべての型のエントリーポイントを統一することができます。つまり、要素のリストとは思えないようなオブジェクトでも、長さをチェックすることができるのです。 これには、文字列、キュー、ツリーなどが含まれます。
また、len()
の機能的な性質は、機能的なプログラミングスタイルにも適しています。
lengths = map(len, list_of_containers)
python のオブジェクトの長さを取得するには、len
関数の引数としてオブジェクトを渡すのが好ましい方法です。 内部的には、pythonは渡されたオブジェクトの特別な__len__
メソッドを呼び出そうとします。
ただ、len(arr)
を使えばいいのです。
>>> import array
>>> arr = array.array('i')
>>> arr.append('2')
>>> arr.__len__()
1
>>> len(arr)
1