Pythonでリスト(配列)や文字列を扱っていると、「このリストには全部で何個のデータが入っているのか?」や「特定の文字は何回出現するのか?」を知りたくなる場面が頻繁にあります。
要素数を数える処理はプログラミングの基本ですが、Pythonには目的や条件に応じていくつかの異なるアプローチが存在します。
この記事では、Pythonにおける要素数のカウント方法について、基本の len() 関数から、メソッドを使った個数計算、さらにライブラリを使った高度な集計テクニックまで、サンプルコード付きで詳しく解説します。
![]() 執筆者:マヒロ |
|
- OS:Windows 11 / macOS Sequoia
- IDE:Visual Studio / VS Code / IntelliJ IDEA
- その他:Chrome DevTools / 各言語最新安定版
※本メディアでは、上記環境にてコードの動作と情報の正確性を検証済みです。
リスト(配列)の全要素数を取得する基本:len()関数
まずは、リストやタプルなどに含まれる「すべての要素の数(長さ)」を取得する最も基本的な方法です。
これには組み込み関数の len() を使用します。
len() の基本的な使い方
使い方は非常にシンプルで、len() の引数に対象となるリストや文字列を渡すだけです。
# リスト(配列)の定義
fruits = ["apple", "banana", "cherry", "date"]
# 全要素数を取得
count = len(fruits)
print(f"フルーツの数は {count} 個です。")
実行結果
フルーツの数は 4 個です。
len(fruits) を実行すると、リスト fruits に含まれている要素の数である 4 が返されます。
リストだけでなく、文字列(文字数)や辞書(キーの数)、タプルなど、あらゆるシーケンス型オブジェクトに対して共通して使える非常に重要な関数です。
特定の値の出現回数をカウントする:count()メソッド
「リストの中に “apple” は何個あるか?」といったように、特定の値の個数を知りたい場合は、リスト型のメソッドである count() を使用します。
count() の基本的な使い方
# 重複を含むリスト
scores = [100, 80, 90, 80, 70, 100, 80]
# "80" という値がいくつあるか数える
score_80_count = scores.count(80)
# "100" という値がいくつあるか数える
score_100_count = scores.count(100)
print(f"80点の人数: {score_80_count} 人")
print(f"100点の人数: {score_100_count} 人")
実行結果
80点の人数: 3 人
100点の人数: 2 人
リスト.count(探したい値) という形式で記述します。
上記の例では scores.count(80) とすることで、リスト内に 80 という数値が3つ含まれているため、3 が返されます。
存在しない値を指定した場合はエラーにはならず、単純に 0 が返されます。
条件に一致する要素数だけをカウントする方法
実務では「特定の値」ではなく、「100以上の数値の個数」や「”a” から始まる単語の個数」のように、ある条件を満たす要素の数を数えたい場面が多くあります。
このような場合、count() メソッドは使えないため、内包表記や sum() 関数を組み合わせて実装します。
sum() とジェネレータ式を使ったスマートな方法
Pythonでは、True は 1、False は 0 として扱われる性質を利用して、条件式の結果を合計することでカウントを行います。
numbers = [12, 45, 6, 89, 33, 10, 5]
# 条件: 20以上の数字は何個あるか?
# (num >= 20) が True(1) になる回数を合計する
over_20_count = sum(num >= 20 for num in numbers)
print(f"20以上の数字は {over_20_count} 個です。")
実行結果
20以上の数字は 3 個です。
sum(num >= 20 for num in numbers) という記述がポイントです。
これはリスト内の各要素 num に対して num >= 20 かどうかを判定し、その結果(True または False)をすべて足し合わせています。
True は 1 として計算されるため、結果的に条件にマッチした要素の個数が得られます。
メモリ効率も良く、Pythonらしい推奨される書き方です。
リスト内包表記とlen()を使う方法
より直感的に理解しやすい書き方として、一度条件に合う要素だけのリストを作り、その長さを測る方法もあります。
words = ["apple", "ant", "banana", "art", "cat"]
# "a" で始まる単語だけのリストを作成
a_words = [w for w in words if w.startswith("a")]
# そのリストの長さを取得
count = len(a_words)
print(f"'a'から始まる単語: {count} 個 ({a_words})")
実行結果
'a'から始まる単語: 3 個 (['apple', 'ant', 'art'])
[w for w in words if w.startswith("a")] で、条件に一致する要素だけを抽出した新しいリストを生成しています。
その後に len() で要素数を数えています。
条件に一致した具体的なデータも後で使いたい場合は、こちらの方法が便利です。
すべての要素の出現回数を一括集計する:collections.Counter
「リスト内のすべての要素について、それぞれ何個あるか知りたい」という場合、for 文や count() を繰り返すと処理が遅くなってしまいます。
そんな時は、標準ライブラリの collections モジュールにある Counter クラスを使うのがベストプラクティスです。
Counterの使い方
from collections import Counter
items = ["apple", "banana", "apple", "orange", "banana", "apple"]
# 各要素の出現回数を一括カウント
counts = Counter(items)
print(counts)
print(f"appleの個数: {counts['apple']}")
実行結果
Counter({'apple': 3, 'banana': 2, 'orange': 1})
appleの個数: 3
Counter(items) を実行するだけで、要素をキー、出現回数を値とした辞書のようなオブジェクトが生成されます。
結果を見ると、apple が3個、banana が2個と、自動的に集計されていることがわかります。
また、counts['apple'] のように辞書と同じ感覚で特定の値の個数を取得することも可能です。
文字列や多次元配列(ネストしたリスト)の場合
リスト以外のデータ構造についても、要素数の数え方を簡単に触れておきます。
文字列の中の特定文字数をカウントする
文字列もシーケンスの一種なので、len() や count() が同様に使えます。
text = "hello world"
# 全体の文字数
print(len(text)) # 11
# "l" の出現回数
print(text.count("l")) # 3
2次元配列(リストのリスト)の要素数
リストの中にリストが入っている場合、len() は外側のリストの要素数を返します。
全要素数(セルの総数)を知りたい場合は計算が必要です。
matrix = [
[1, 2, 3],
[4, 5, 6]
]
# 行数(外側の要素数)
rows = len(matrix)
# 列数(内側の要素数:すべての行で同じと仮定)
cols = len(matrix[0])
# 全要素数
total = rows * cols
print(f"全要素数: {total}")
len(matrix) で行数(2)が、len(matrix[0]) で1行目の列数(3)が取得できます。
これらを掛け合わせることで、全体の要素数(6)を算出しています。
不揃いなリスト(ジャグ配列)の場合は、sum(len(row) for row in matrix) のように各行の長さを合計する必要があります。
Pythonのスキルを活かして年収を上げる方法
以上、Pythonで要素数をカウントする方法について解説してきました。
Pythonエンジニアの需要は非常に高いため、転職によって数十万円の年収アップはザラで、100万円以上年収が上がることも珍しくありません。
なお、転職によって年収を上げたい場合は、エンジニア専門の転職エージェントサービスを利用するのが最適です。
転職エージェントも副業エージェントも、登録・利用は完全無料なので、どんな求人や副業案件があるのか気になる方は、気軽に利用してみるとよいでしょう。
| 年収アップにこだわりたい方 (平均アップ額138万円の実績) | テックゴー |
| 未経験・経験者問わず幅広く探したい方 | ユニゾンキャリア |
| 業界に精通した担当者に相談したい方 | キッカケエージェント |
| ゲーム業界への転職を志望する方 | ファミキャリ |
| エンジニア未経験からキャリアを築く方 | イーチキャリア |



