[解決!Python]文字列やリストの要素数を調べるには:解決!Python
文字列やリストの要素数(長さ)を得るには組み込みのlen関数を使用する。if文やfor文で、len関数を使って要素数を調べなくてもよい場合についても説明。
# 文字列の要素数を調べる
x = '0123456'
l = len(x)
print(l) # 7
# リストの要素数を調べる
x = [0, '1', 2, '3', 4]
l = len(x)
print(l) # 5
# 多次元リストでは最外のリストの要素数が得られる
x = [[0, 1, 2], [3, 4, 5]] # 2次元リスト(2行3列のリスト)
l = len(x)
print(l) # 2(行数)
l = len(x[0]) # 内側のリストの要素数を調べる
print(l) # 3(列数)
# 辞書の場合は、キー/値の組の数が得られる。
x = {'foo': 'FOO', 'bar': 'BAR', 'baz': 'BAZ'}
l = len(x)
print(l) # 3
len関数
len関数はコレクションやシーケンスなどを受け取り、その要素数を返す関数だ。
len(s)
その戻り値は、対象のオブジェクトの要素数(長さ)となる。
コレクションやシーケンスは__len__特殊メソッドを持っているが、len関数を呼び出すにはそうしたオブジェクトを引数に指定する必要がある。整数や浮動小数点数など、このメソッドが定義されていないオブジェクトをlen関数に渡すとTypeError例外が発生する。
x = 99
l = len(x) # 例外
len関数を使わなくてもよい場合
注意点としては、オブジェクトが空かどうかで処理を振り分けたいようなときには、len関数を使う必要がない点だ。Pythonでは、空のシーケンスやコレクションはFalseと判断されるので、len関数を使う必要はない。
x = 'not None'
if x: # 「if len(x) != 0:」「if len(x):」のように書く必要はない
print(x)
else:
print('None')
例えば、このコードではif文の条件として文字列xを書くだけで、それが空かどうかを判断できている。
また、forループの中で要素とそのインデックスを同時に扱うのであれば、len関数を使わずにenumerate関数を使用するとよい。
Copyright© Digital Advantage Corp. All Rights Reserved.