Pythonのlen関数の使い方

Modified: | Tags: Python

Pythonの組み込み関数len()を使うと、リストや文字列など様々な型のオブジェクトのサイズ(要素数や文字数)を取得できる。

len()でリストの要素数を取得

len()の引数にリストlistを指定するとその要素数が返される。

l = [0, 1, 2]

print(len(l))
# 3
source: len_usage.py

二次元配列(リストのリスト)の場合など、詳しくは以下の記事を参照。

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文字としてカウントされる。エスケープシーケンスについてなどの詳細は以下の記事を参照。

特殊メソッド__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

関連カテゴリー

関連記事