mathpython

リストの長さ(len):リストがリストを含むときの要素数を再帰的に計算する

リストの長さ(要素数)はlenで表します。

入力

a = ['apple', 'grape', 'lemon']
b = len(a)

print(b)

出力

3

リストにリストがあるとき

リストの要素にリストがあるとき、その長さは「リストを直接構成する要素の個数」となります。リストに4つのリストがあり、各リストが複数の要素を持つとします。このときリストの長さはあくまでも4です。

入力

a = [['apple', 'grape', 'lemon'], ['banana', 'orange'], ['banana', 'orange'], ['りんご', 'みかん', 'バナナ']]
b = len(a)

print(b)

出力

4

リストのリストにある要素は全部で10個ですが、リストそのものは4つの要素からなります。リストがリストを持つとき、そのリストにあるすべての要素数はどのように計算すればいいでしょうか?

**入力**

def re_len(a):
    return sum(re_len(b) if isinstance(b, list) else 1 for b in a)

a = [['apple', 'grape', 'lemon'], ['banana', ['banana', 'orange']], ['りんご', 'みかん', 'バナナ']]
b = re_len(a)

print(b)

出力

9

関数を再帰的に定義することでネストを持つリストの「長さ」を計算できます。上のコードにあるサンプルのリストはリストを持つリストを要素に持ちます。リストそのものはカウントしないで、リストでない純粋な要素をトータルでカウントする関数が、上にあげたre_lenという関数です。“Deep length” of a listを参考にしました。

広告

教育総合サイト

高校化学専門サイト

色辞典

数の辞典