Pythonのlen関数で様々な型のオブジェクトのサイズを取得

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

  1. 組み込み関数 len() — Python 3.6.5 ドキュメント

以下の内容について説明します。

リスト(list型)の要素数を取得 タプル(tuple型)の要素数を取得 集合(set型)の要素数を取得 辞書(dict型)の要素数を取得 文字列(str型)の文字数を取得 NumPy配列ndarrayの最初の次元のサイズを取得 pandas.DataFrame, pandas.Seriesの行数・要素数を取得 数値(intやfloat)などに対してはエラーになるので注意

リスト(list型)の要素数を取得

リスト(list型) をlen()の引数に指定するとその要素数を取得できます。

l = [0, 1, 2]

print(len(l))
# 3

二次元配列(リストのリスト)の場合など、

タプル(tuple型)の要素数を取得

タプル(tuple型)をlen()の引数に指定するとその要素数を取得できます。

t = (0, 1, 2)

print(len(t))
# 3

集合(set型)の要素数を取得

集合(set型)をlen()の引数に指定するとその要素数を取得できます。

s = {0, 1, 2}

print(len(s))
# 3

集合についての詳細は

辞書(dict型)の要素数を取得

辞書(dict型)をlen()の引数に指定するとその要素数を取得できます。

d = {'key0': 0, 'key1': 1, 'key2': 2}

print(len(d))
# 3

文字列(str型)の文字数を取得

文字列(str型)をlen()の引数に指定するとその文字数を取得できます。

s = 'abcde'

print(len(s))
# 5

s = 'あいうえお'

print(len(s))
# 5

全角半角についてやエスケープシーケンスについてなどの詳細は

NumPy配列ndarrayの最初の次元のサイズを取得

NumPy配列numpy.ndarrayをlen()の引数に指定すると最初の次元のサイズを取得できます。

import numpy as np

a_1d = np.arange(3)

print(a_1d)
# [0 1 2]

print(len(a_1d))
# 3

a_2d = np.arange(12).reshape((3, 4))

print(a_2d)
# [[ 0  1  2  3]
#  [ 4  5  6  7]
#  [ 8  9 10 11]]

print(len(a_2d))
# 3

a_3d = np.arange(24).reshape((2, 3, 4))

print(a_3d)
# [[[ 0  1  2  3]
#   [ 4  5  6  7]
#   [ 8  9 10 11]]
#  [[12 13 14 15]
#   [16 17 18 19]
#   [20 21 22 23]]]

print(len(a_3d))
# 2

各次元のサイズやすべての要素数を取得するには属性shape, sizeを使います。詳細は

pandas.DataFrame, pandas.Seriesの行数・要素数を取得

pandas.DataFrameをlen()の引数に指定すると行数、pandas.Seriesを指定すると要素数を取得できます。

import pandas as pd

df = pd.DataFrame({'A': [0, 1, 2], 'B': [3, 4, 5]}, index=['a', 'b', 'c'])

print(df)
#    A  B
# a  0  3
# b  1  4
# c  2  5

print(len(df))
# 3

s = pd.Series([0, 1, 2], index=['a', 'b', 'c'])

print(s)
# a    0
# b    1
# c    2
# dtype: int64

print(len(s))
# 3

pandas.DataFrameの列数、全要素数を取得したい場合は属性shape, sizeを使います。詳細は

数値(intやfloat)などに対してはエラーになるので注意

特殊メソッド__len__が定義されていない型・クラスのオブジェクトをlen()の引数に指定するとエラーTypeErrorになります。 組み込み型では数値(int型やfloat型)や、真偽値(bool型)などはエラーになるので気をつけてください。

# print(len(100))
# TypeError: object of type 'int' has no len()

# print(len(0.1))
# TypeError: object of type 'float' has no len()

# print(len(True))
# TypeError: object of type 'bool' has no len()
Last Updated: 6/26/2019, 10:34:03 PM