Pythonでプログラミングを行う際、複数のデータをまとめて扱うことができる「リスト」は、最も基本的で頻繁に使われるデータ構造の一つです。
そして、リストを操作する上で、「リストの中にいくつの要素が入っているか」を知る処理は、for
ループの回数を決めたり、データが存在するかを判定したりと、あらゆる場面で必要不可欠な操作となります。
この記事では、リストの要素数を取得するための最も基本的な方法から、特定の要素がいくつ含まれているかを数える応用的なテクニックまで、豊富なサンプルコードと共にわかりやすく解説していきますので、是非参考にしてください。
【本記事の信頼性】
- 執筆者は元エンジニア
- 大手プログラミングスクールのWebディレクター兼ライターを経験
- 自らも地元密着型のプログラミングスクールを運営
受講生から評判の良いプログラミングスクール
スクール |
特徴 |
受講料金 |
大手比較サイトで4年連続人気NO.1!受講生からの評判も非常に高く、Web系のエンジニアを目指すならRUNTEQ一択。 | 550,000円(給付金適用あり) | |
月単価80万円以上の現役エンジニア講師による指導!一度入会すればサポートは半永久的。 | 498,000円 | |
格安で質の高いWeb制作スキルを習得したい人におすすめ!業界最安級の料金でありながら、コミュニティやサポートが充実。 | 129,800円~ | |
完全無料でプログラミングが学べる貴重なスクール!最短1ヶ月で卒業可能。ゼロスク運営会社への就職もできる。 | 無料 | |
長期間に渡って学習し、希少人材を目指す人に最適なスクール!受講料は高いものの、高収入を得られる人材を目指せる。 | 96~132万円 |
【基本】リストの要素数を取得するlen()関数
Pythonでリストに含まれる要素の総数(リストの長さ)を取得するには、組み込み関数のlen()
を使うのが最も標準的で簡単な方法です。
len()
は “length”(長さ)の略で、引数に渡されたオブジェクトの長さを返します。
リストだけでなく、文字列の文字数やタプルの要素数など、様々なオブジェクトの長さを取得するために使われる汎用的な関数です。
サンプルコード
# 果物のリスト
fruits = ['apple', 'banana', 'cherry']
# 要素数を取得
num_fruits = len(fruits)
print(f"fruitsリストの要素数: {num_fruits}")
# 空のリスト
empty_list = []
print(f"empty_listの要素数: {len(empty_list)}")
# 2次元リスト(リストの中にリストが入っている)
nested_list = [[1, 2], [3, 4], [5, 6]]
print(f"nested_listの要素数: {len(nested_list)}")
実行結果
fruitsリストの要素数: 3
empty_listの要素数: 0
nested_listの要素数: 3
ソースコードの解説
fruits
リストには3つの文字列要素が含まれているため、len(fruits)
は3
を返します。
empty_list
のように中身が何もない空のリストの場合、要素数は0
となります。
これは、リストにデータがあるかどうかを判定する際によく利用されるでしょう。
nested_list
の例は少し注意が必要です。
len()
は、リストの最も外側の階層にある要素の数を数えます。
この場合、[1, 2]
、[3, 4]
、[5, 6]
という3つの内側のリストが要素としてカウントされるため、結果は3
となります。
中の数字をすべて合計した6
にはならない点を理解しておいてください。
【応用】特定の要素の個数を数えるcount()メソッド
リスト全体の要素数ではなく、「リストの中に、ある特定の要素がいくつ含まれているか」を数えたい場面もよくあります。
例えば、アンケート結果の集計などで、「Aと回答した人は何人いるか」を調べたいようなケースです。
このような場合には、リストが持つcount()
メソッドを使います。
サンプルコード
scores = [80, 95, 70, 80, 100, 65, 80]
# 80点がいくつあるか数える
count_80 = scores.count(80)
print(f"80点の数: {count_80}")
# リストに存在しない110点を数える
count_110 = scores.count(110)
print(f"110点の数: {count_110}")
実行結果
80点の数: 3
110点の数: 0
ソースコードの解説
scores.count(80)
は、scores
リストの中から80
という値を持つ要素を探し出し、その個数を返します。
この例では3つ含まれているため、3
という結果になりました。
一方、リスト内に一つも存在しない値(この例では110
)をcount()
で数えようとすると、エラーにはならず、0
が返ってきます。
これにより、特定の要素の存在確認にも利用することが可能です。
len()
がリスト全体の長さを測るのに対し、count()
は特定の住人(要素)が何人いるかを数える、とイメージすると分かりやすいかもしれません。
リストの要素数を使った実践的なテクニック
取得した要素数は、様々な場面でプログラムの制御に活用されます。
リストが空かどうかの判定
リストに処理対象のデータが含まれているかを確認するのは、非常に一般的な処理です。
len()
を使えば、以下のように書けます。
my_list = []
if len(my_list) == 0:
print("リストは空です。")
しかし、よりPythonらしい(Pythonicな)書き方として、以下のようにリストそのものを条件式に使う方法が好まれます。
my_list = []
if not my_list:
print("リストは空です。(Pythonicな書き方)")
Pythonでは、空のリストはFalse
、要素が1つでも入っているリストはTrue
として評価される性質があります。
そのため、if not my_list:
という記述で「もしリストが空ならば」という条件を簡潔に表現できるのです。
forループと組み合わせて使う
リストのインデックス番号を使って処理を行いたい場合、range()
関数とlen()
を組み合わせることがあります。
fruits = ['apple', 'banana', 'cherry']
for i in range(len(fruits)):
print(f"インデックス{i}: {fruits[i]}")
このコードは、range(3)
、つまり0, 1, 2
という連続した数値を生成し、それをインデックスとして利用して各要素にアクセスします。
ただし、Pythonのfor
ループでは、インデックスが不要な場合はfor fruit in fruits:
のように直接要素を取り出す方がシンプルで推奨されます。
インデックスと要素の両方が必要な場合は、for i, fruit in enumerate(fruits):
という書き方を使うのが一般的です。
NumPy配列の要素数を取得する方法
データ分析や科学技術計算を行う際には、標準のリストの代わりに、より高性能なNumPyライブラリの配列(ndarray
)がよく使われます。
NumPy配列の要素数を取得する方法は、標準のリストとは少し異なる点があるため注意が必要です。
len()
をNumPy配列に使うと、リストの場合と同様に、最も外側の次元の要素数(行数)しか返しません。
サンプルコード
import numpy as np
# 2行3列のNumPy配列を作成
arr = np.array([[1, 2, 3], [4, 5, 6]])
# len()を使うと行数が返る
print(f"len(arr)の結果: {len(arr)}")
# 全要素数を取得するには .size 属性を使う
print(f"arr.size の結果: {arr.size}")
# 配列の形状(各次元の要素数)を取得するには .shape 属性を使う
print(f"arr.shape の結果: {arr.shape}")
実行結果
len(arr)の結果: 2
arr.size の結果: 6
arr.shape の結果: (2, 3)
このように、NumPy配列のすべての要素の総数を知りたい場合は、len()
ではなく.size
属性を使います。
また、(行数, 列数)
というタプルで配列の形状を知りたい場合は、.shape
属性を使用してください。
まとめ
今回は、Pythonでリストの要素数を取得するための様々な方法について解説しました。
なお、Pythonを体系的に学んだり、Pythonのスキルを高めたりするためには、プログラミングスクールを利用するのも有効です。
細かな疑問がすぐに解決するだけでなく、現役エンジニアが「質の高いポートフォリオ」を作成するための手助けをしてくれたり、エンジニア就職・転職のコツを教えてくれたりするなど、様々なメリットがありますので、独学に疲れた方は検討してみてはいかがでしょうか。