Pythonのリストの要素数(長さ)を取得する方法

Pythonでリストの要素数を取得したい場合はlen()関数を使います。多重リストの場合は、ちょっとした操作が必要なので、それもあわせて解説します。

目次

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

リストの要素数を取得したい時はlen()関数を使います。引数にリストを渡せば、要素数を返してくれます。

In [1]:
nums = [0, 1, 2, 3, 4]
len(nums)
Out[1]:
5

2. 多重リストの要素数の取得

2.1. 外側のリストの要素数を取得

多重リストの場合は、一番外側のリストだけを数えます。

In [2]:
nums_double = [[0, 1, 2], [3, 4, 5], [6, 7], [8, 9]]
len(nums_double)
Out[2]:
4

4と出力されていますが、これは下図のように最も外側の要素を数えているためです。

2.2. 内側のリストの要素数を取得

多重リストの内側のリストの要素数を取得したい時は、len()関数の引数にリストを渡す時に、任意のインデックス番号でスライスします。

以下のコードをご覧ください。

In [3]:
print(nums_double[0])
print(len(nums_double[0]))
[0, 1, 2]
3

「nums_double[0]」で、このリストの一番最初(インデックス番号0番)の要素である[0, 1, 2]を、len()関数の引数に渡しているので3と出力されます。

なお、リストのスライスについては「Pythonのリストのスライスと分割」で解説しています。

次のようにリスト内包表記を使えば、二重リストの内側の要素数を一覧で取得することができます。(リスト内包表記は「Pythonのリスト内包表記の書き方の基本と応用」でご確認ください)。

In [4]:
[len(i) for i in nums_double]
Out[4]:
[3, 3, 2, 2]

最初は分かりづらいと思うので解説しておきます。

まず、この多重リストをfor文で回すと次のようになります(for文については「Pythonのfor文による繰り返し処理(forループ)の基本」でご確認ください)。

In [5]:
for i in nums_double:
    print(i)
[0, 1, 2]
[3, 4, 5]
[6, 7]
[8, 9]

リスト内包表記では、このfor文の出力結果に対して「len(i)」を実行しているので、結果、一回のforループごとに、順番に内側のリストの要素数を計算していることになります。

こうしたことは何度もコードを書いているうちに、自然と理解が深まっていきます。

もっと多重のリストになった場合は、forループも多重にすることで対応できます。まず以下のコードはfor文を多重で回しているものです。

In [6]:
nums = [[[1,2, 3], [4, 5]], [[6, 7, 8], [9, 10]], [[11, 12, 13, 14], [15]]]
for i in nums:
    for j in i:
        print(j)
[1, 2, 3]
[4, 5]
[6, 7, 8]
[9, 10]
[11, 12, 13, 14]
[15]

これをリスト内包表記で次のように書くことで、内側の各リストの要素数を一度に取得することができます。

In [7]:
[len(j) for i in nums for j in i] 
Out[7]:
[3, 2, 3, 2, 4, 1]

3. まとめ

リストの要素数はlen()関数で取得することができます。

len()は、多重リストの場合は、もっとも外側のリストの要素数を取得します。内側のリストの要素数を取得したい場合は、引数にスライスしたリストを渡すことで可能です。

全ての内側のリストの要素数を取得したい場合は、リスト内包表記が便利です。

リスト内包表記には、for文の知識が必要不可欠なので、以下で学んでおきましょう。



よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメント一覧 (1件)

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次
閉じる