Python リストのcount()|要素の個数を数える基本

Pythonのリストのcount()メソッドを使った要素の個数を数える方法を分かりやすく解説。基本的な使い方から実践的な応用例まで、データ分析に便利な要素カウントの方法を具体例で学習できます。

Learning Next 運営
15 分で読めます

Python リストのcount()|要素の個数を数える基本

みなさん、Pythonでリストの要素を数えたいと思ったことはありませんか?

「同じ値がいくつあるか知りたい」「データの中で特定の値の個数を調べたい」

こんなときに頼りになるのが、Pythonのcount()メソッドです。

この記事では、count()メソッドの使い方を基本から応用まで、分かりやすく解説します。 データ分析やプログラミングで必要になる「要素の個数を数える」スキルを身につけましょう!

count()メソッドって何?

count()メソッドは、リスト内の指定した要素の個数を数えるPythonの組み込みメソッドです。

簡単に言うと、「この値がいくつ入ってる?」を教えてくれる便利な機能なんです。

戻り値は整数で、該当する要素の個数を返します。

基本的な書き方

count()メソッドの基本的な書き方を見てみましょう。

# 基本構文
リスト.count()
# 例
numbers = [1, 2, 3, 2, 4, 2, 5]
count = numbers.count(2)
print(count) # 3

この例では、リストnumbersの中に「2」がいくつあるかを数えています。 結果は3個でした。

とてもシンプルで使いやすいですね。

最も基本的な使用例

最も基本的なcount()メソッドの使用例を見てみましょう。

# 基本的な要素カウント
fruits = ["りんご", "バナナ", "りんご", "オレンジ", "りんご", "バナナ"]
# りんごの個数を数える
apple_count = fruits.count("りんご")
print(f"りんごの個数: {apple_count}") # りんごの個数: 3
# バナナの個数を数える
banana_count = fruits.count("バナナ")
print(f"バナナの個数: {banana_count}") # バナナの個数: 2

実行結果はこちらです。

りんごの個数: 3 バナナの個数: 2

このように、**.count("値")**で特定の要素の個数を簡単に数えることができます。

様々なデータ型での使用

数値データの場合

数値のリストでもcount()メソッドを使えます。

scores = [85, 90, 85, 78, 92, 85, 88, 90]
# 85点の個数を数える
count_85 = scores.count(85)
print(f"85点の個数: {count_85}") # 85点の個数: 3
# 90点の個数を数える
count_90 = scores.count(90)
print(f"90点の個数: {count_90}") # 90点の個数: 2
# 存在しない値の場合
count_100 = scores.count(100)
print(f"100点の個数: {count_100}") # 100点の個数: 0

実行結果はこちらです。

85点の個数: 3 90点の個数: 2 100点の個数: 0

存在しない値を指定した場合は、0が返されます。 エラーにならないので安心して使えますね。

文字列データの場合

文字列のリストでも効果的に使用できます。

colors = ["赤", "青", "緑", "赤", "黄", "青", "赤"]
# 各色の個数を数える
red_count = colors.count("赤")
blue_count = colors.count("青")
green_count = colors.count("緑")
print(f"赤: {red_count}個") # 赤: 3個
print(f"青: {blue_count}個") # 青: 2個
print(f"緑: {green_count}個") # 緑: 1個

実行結果はこちらです。

赤: 3個 青: 2個 緑: 1個

文字列の場合も、数値と同じように簡単にカウントできます。

混合データ型の場合

異なるデータ型が混在するリストでも使用できます。

mixed_data = [1, "apple", 1, 2.5, "apple", 1, True, "apple"]
# 数値1の個数
count_1 = mixed_data.count(1)
print(f"数値1の個数: {count_1}") # 数値1の個数: 3
# 文字列"apple"の個数
count_apple = mixed_data.count("apple")
print(f"appleの個数: {count_apple}") # appleの個数: 3
# 注意:TrueとFalseは数値として扱われる
count_true = mixed_data.count(True)
print(f"Trueの個数: {count_true}") # Trueの個数: 3(1と同じ扱い)

実行結果はこちらです。

数値1の個数: 3 appleの個数: 3 Trueの個数: 3(1と同じ扱い)

注意点: PythonではTrueは1と、Falseは0と同じ扱いになることを覚えておきましょう。

実践的な使用例

アンケート結果の集計

アンケートの結果を集計する際によく使用されます。

# 満足度アンケートの結果(5段階評価)
satisfaction_scores = [5, 4, 5, 3, 4, 5, 2, 4, 5, 3, 4, 5, 1, 4, 5]
# 各評価の個数を集計
print("満足度アンケート結果:")
for score in range(1, 6):
count = satisfaction_scores.count(score)
print(f"評価{score}: {count}人")

実行結果はこちらです。

満足度アンケート結果: 評価1: 1人 評価2: 1人 評価3: 2人 評価4: 5人 評価5: 6人

このコードでは、range(1, 6)で1から5までの評価をループしています。 各評価についてcount(score)で個数を数えています。

データの分布を把握するのにとても便利ですね。

成績データの分析

学生の成績データを分析する際にも活用できます。

# 学生の成績データ(A, B, C, D, Fの5段階)
grades = ["A", "B", "A", "C", "B", "A", "D", "B", "A", "C", "A", "B", "C", "A"]
# 各成績の個数を集計
grade_counts = {}
for grade in ["A", "B", "C", "D", "F"]:
count = grades.count(grade)
grade_counts[grade] = count
print(f"成績{grade}: {count}人")
# 合格者(A, B, C)の割合
total_students = len(grades)
passing_students = grade_counts["A"] + grade_counts["B"] + grade_counts["C"]
passing_rate = (passing_students / total_students) * 100
print(f"合格率: {passing_rate:.1f}%") # 合格率: 92.9%

実行結果はこちらです。

成績A: 6人 成績B: 4人 成績C: 3人 成績D: 1人 成績F: 0人 合格率: 92.9%

このコードでは、各成績の個数を辞書grade_countsに保存しています。 その後、A、B、Cの合計を計算して合格率を求めています。

統計的な分析にも活用できます。

商品の売上分析

商品の売上データを分析する際にも便利です。

# 1日の売上データ(商品名のリスト)
sales_data = [
"コーヒー", "紅茶", "コーヒー", "ジュース", "コーヒー", "紅茶",
"コーヒー", "ジュース", "紅茶", "コーヒー", "ジュース", "コーヒー"
]
# 各商品の販売個数を集計
products = ["コーヒー", "紅茶", "ジュース"]
total_sales = len(sales_data)
print("本日の売上実績:")
for product in products:
count = sales_data.count(product)
percentage = (count / total_sales) * 100
print(f"{product}: {count}個 ({percentage:.1f}%)")

実行結果はこちらです。

本日の売上実績: コーヒー: 6個 (50.0%) 紅茶: 3個 (25.0%) ジュース: 3個 (25.0%)

このコードでは、各商品の個数と全体に占める割合を計算しています。 (count / total_sales) * 100で割合を求めています。

ビジネス分析でも役立ちますね。

パフォーマンスの考慮

大量データでの使用

大量のデータを扱う場合は、パフォーマンスに注意が必要です。

# 大量のデータの例
large_data = [1, 2, 3, 4, 5] * 100000 # 50万個の要素
# count()メソッドの実行時間測定
import time
start_time = time.time()
count_result = large_data.count(3)
end_time = time.time()
print(f"結果: {count_result}")
print(f"実行時間: {end_time - start_time:.4f}秒")

count()メソッドは線形時間(O(n))で動作します。 つまり、データサイズが大きくなると処理時間も増加します。

でも大丈夫です!通常の用途では十分高速に動作します。

より効率的な方法

頻繁に複数の要素をカウントする場合は、Counterクラスが効率的です。

from collections import Counter
# 大量のデータで複数の要素をカウント
data = [1, 2, 3, 1, 2, 1, 4, 5, 1, 2, 3, 1] * 1000
# count()メソッドを複数回使用
count_1 = data.count(1)
count_2 = data.count(2)
count_3 = data.count(3)
# Counterクラスを使用(より効率的)
counter = Counter(data)
print(f"1の個数: {counter[1]}")
print(f"2の個数: {counter[2]}")
print(f"3の個数: {counter[3]}")

Counterクラスは一度にすべての要素をカウントするので、複数の要素を調べる場合は効率的です。

複数の要素を同時にカウントする場合は、Counterクラスの使用を検討しましょう。

応用的な使用例

重複要素の検出

重複している要素を検出する際にも活用できます。

student_ids = [1001, 1002, 1003, 1001, 1004, 1002, 1005]
# 重複している要素を検出
duplicates = []
for student_id in set(student_ids):
if student_ids.count(student_id) > 1:
duplicates.append(student_id)
print(f"重複している学生ID: {duplicates}") # 重複している学生ID: [1001, 1002]

この例では、set(student_ids)で一意な学生IDを取得しています。 その後、count(student_id) > 1で重複をチェックしています。

データの整合性チェックに便利です。

条件付きカウント

特定の条件を満たす要素のカウントも可能です。

temperatures = [25, 30, 35, 28, 32, 38, 26, 29, 31, 36]
# 30度以上の日数を数える
hot_days = 0
for temp in temperatures:
if temp >= 30:
hot_days += 1
print(f"30度以上の日数: {hot_days}日") # 30度以上の日数: 6日
# リスト内包表記を使用した方法
hot_days_list = [temp for temp in temperatures if temp >= 30]
print(f"30度以上の日数: {len(hot_days_list)}日") # 30度以上の日数: 6日

最初の例では、for文で条件をチェックしています。 2番目の例では、リスト内包表記を使って条件を満たす要素を抽出し、len()で個数を求めています。

条件を満たす要素の個数も簡単に計算できます。

文字列での使用

文字列内の文字カウント

文字列でもcount()メソッドを使用できます。

text = "Hello, World! Hello, Python!"
# 特定の文字の個数をカウント
count_l = text.count("l")
print(f"'l'の個数: {count_l}") # 'l'の個数: 4
# 特定の文字列の個数をカウント
count_hello = text.count("Hello")
print(f"'Hello'の個数: {count_hello}") # 'Hello'の個数: 2
# 大文字・小文字を区別する
count_L = text.count("L")
print(f"'L'の個数: {count_L}") # 'L'の個数: 0

実行結果はこちらです。

'l'の個数: 4 'Hello'の個数: 2 'L'の個数: 0

文字列のcount()メソッドでは、大文字・小文字を区別することに注意しましょう。

文字列の分析にも活用できます。

まとめ

Pythonのリストのcount()メソッドは、要素の個数を簡単に数えることができる便利なメソッドです。

今回学んだポイント

  • count()メソッドで特定の要素の個数を取得できる
  • 数値、文字列、混合データ型すべてに対応
  • アンケート集計、成績分析、売上分析など様々な場面で活用可能
  • 大量データの場合はCounterクラスも検討
  • 文字列でも使用可能(大文字・小文字は区別される)

count()メソッドは、シンプルで使いやすく、データ分析の基本的なツールとして重要な役割を果たします。

ぜひ実際のプログラミングでcount()メソッドを使ってみてください。 データ処理のスキルが向上し、より効率的な分析ができるようになりますよ!

関連記事