Pythonのlen関数の使い方
Modified: | Tags: Python
Pythonの組み込み関数len()を使うと、リストや文字列など様々な型のオブジェクトのサイズ(要素数や文字数)を取得できる。
目次
len()でリストの要素数を取得
len()の引数にリストlistを指定するとその要素数が返される。
l = [0, 1, 2]
print(len(l))
# 3
source: len_usage.py
二次元配列(リストのリスト)の場合など、詳しくは以下の記事を参照。
- 関連記事: Pythonでリストのサイズ(要素数)を取得
len()でタプルの要素数を取得
len()の引数にタプルtupleを指定するとその要素数が返される。
t = (0, 1, 2)
print(len(t))
# 3
source: len_usage.py
len()で集合の要素数を取得
len()の引数に集合setを指定するとその要素数が返される。
s = {0, 1, 2}
print(len(s))
# 3
source: len_usage.py
集合についての詳細は以下の記事を参照。
len()で辞書の要素数を取得
len()の引数に辞書dictを指定するとその要素数が返される。
d = {'key_0': 0, 'key_1': 1, 'key_2': 2}
print(len(d))
# 3
source: len_usage.py
len()で文字列の文字数を取得
len()の引数に文字列strを指定するとその文字数が返される。
s = 'abcde'
print(len(s))
# 5
s = 'あいうえお'
print(len(s))
# 5
source: len_usage.py
半角も全角も1文字としてカウントされる。エスケープシーケンスについてなどの詳細は以下の記事を参照。
- 関連記事: Pythonで文字列の長さ(文字数)を取得
特殊メソッド__len__()
len()を実行すると特殊メソッド__len__()が呼ばれる。len(x)はx.__len__()と等価。
l = [0, 1, 2]
print(l.__len__())
# 3
s = 'abcde'
print(s.__len__())
# 5
source: len_usage.py
__len__()が定義されていない型のオブジェクトをlen()の引数に指定するとエラーになる。組み込み型では、数値(整数intや浮動小数点数float)や真偽値boolなどはエラーになるので注意。
i = 100
print(hasattr(i, '__len__'))
# False
# print(len(i))
# TypeError: object of type 'int' has no len()
source: len_usage.py
上の例のhasattr()はオブジェクトが指定した属性・メソッドを持っているかを判定する組み込み関数。
自作のクラスでも__len__()を定義することでlen()に対する処理を実装できる。__len__()は0以上の整数を返す必要がある。ここでは説明のために単に100を返している。
class MyClass:
def __len__(self):
return 100
mc = MyClass()
print(len(mc))
# 100
source: len_usage.py