1. ホーム
  2. python

[解決済み] Pythonで配列の長さを取得するには、arr.__len__()が好ましいですか?

2022-03-19 05:48:28

質問

パイソン は、次のように要素数を取得する唯一の方法ですか?

arr.__len__()

もしそうなら、なぜ奇妙な構文になるのでしょうか?

どのように解決するのですか?

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)