Pythonのcount()メソッド活用法!初心者でも使いこなせる要素カウント術

python icon
Python

こんにちは、とまだです。

Pythonで「この文字列に"apple"は何個ある?」「リストの中に1が何個入ってる?」って調べたいときがありますよね。

実はこういった「数を数える」処理、count()メソッドを使えば一発で解決できるんです。

今回は現役のエンジニア、そして元プログラミングスクール講師としての経験から、count()メソッドの使い方について解説します。

count()メソッドは「数える」専門家

プログラミングで何かを数えるとき、for文でループを回して一つずつ数える方法もあります。

でも、それって面倒ですよね。

count()メソッドは、文字列やリストの中に特定の要素が何個あるかを瞬時に教えてくれる便利な道具です。

文字列でcount()を使う

まずは文字列から見ていきましょう。

文字列の中に特定の文字や単語が何回出てくるかを調べられます。

text = "apple banana apple orange"
result = text.count("apple")
print(result)  # 2

このコードでは、"apple"という単語が2回出てくることがわかります。

単純明快ですよね。

部分文字列も数えられる

count()は部分文字列も数えられます。

text = "banana"
print(text.count("ana"))  # 2

"banana"の中には"ana"が2つ含まれています。

最初は"ban"+"ana"、そして"b"+"ana"+"na"という形で重なって存在しているんです。

リストでcount()を使う

リストでも同じようにcount()が使えます。

fruits = ["apple", "banana", "apple", "orange", "apple"]
print(fruits.count("apple"))  # 3

リストの中に"apple"が3個あることがわかりました。

数値のリストでも同じです。

numbers = [1, 5, 1, 2, 1, 3]
print(numbers.count(1))  # 3

数値の1が3個入っていることが確認できます。

実務でcount()が活躍するシーン

「要素を数えるだけ?それって何に使うの?」

そう思うかもしれません。

でも実は、開発現場では意外なところで役立つんです。

SEO対策でキーワードの出現頻度をチェック

Webサイトの記事を分析するとき、特定のキーワードがどれくらい含まれているかを確認したいことがあります。

article = """
Pythonは初心者にもおすすめのプログラミング言語です。
Pythonは文法がシンプルで読みやすいのが特徴。
多くの企業でPythonが採用されています。
"""

keyword_count = article.count("Python")
print(f"Pythonの出現回数: {keyword_count}")  # 3

SEOの観点から、キーワードが適切な頻度で使われているかを確認できます。

エラーログの分析

サーバーのログファイルから、特定のエラーがどれくらい発生しているかを調べる場面もあります。

logs = [
    "INFO: Service started",
    "ERROR: Connection timeout",
    "INFO: Request received",
    "ERROR: Connection timeout",
    "WARNING: Low memory",
    "ERROR: Connection timeout"
]

# 特定のエラーメッセージを数える
timeout_errors = logs.count("ERROR: Connection timeout")
print(f"タイムアウトエラー: {timeout_errors}回")  # 3

このように、エラーの発生頻度を把握して、システムの問題を早期に発見できます。

ユーザーの投稿分析

SNSやレビューサイトで、特定の商品名がどれくらい言及されているかを調べることもできます。

reviews = [
    "このiPhoneは最高です!",
    "Androidも良いけど、やっぱりiPhoneですね",
    "次もiPhoneを買います",
    "Galaxy S23も検討したけど..."
]

# 各レビューでiPhoneの言及回数を合計
total_mentions = 0
for review in reviews:
    total_mentions += review.count("iPhone")

print(f"iPhoneの総言及回数: {total_mentions}")  # 3

count()とcollections.Counterの使い分け

Pythonには、要素を数える別の方法としてcollections.Counterもあります。

どちらを使うべきか、迷うことがありますよね。

Counterは全要素を一括集計

Counterの最大の特徴は、すべての要素を一度に集計できることです。

from collections import Counter

fruits = ["apple", "banana", "apple", "orange", "apple", "banana"]
fruit_counts = Counter(fruits)
print(fruit_counts)
# Counter({'apple': 3, 'banana': 2, 'orange': 1})

一目で全体の分布がわかります。

使い分けの基準

それぞれに向いている場面があります。

count()を使うべきとき:

  • 特定の要素だけを数えたい
  • コードをシンプルに保ちたい
  • importなしで使いたい

Counterを使うべきとき:

  • 全要素の分布を知りたい
  • 最頻出要素を調べたい
  • 複数の要素を同時に集計したい

例えば、ログファイルのエラー種別を全体的に把握したいなら:

from collections import Counter

error_logs = [
    "ERROR: Timeout",
    "ERROR: NotFound",
    "ERROR: Timeout",
    "ERROR: ServerError",
    "ERROR: Timeout"
]

# エラーの種類と回数を一覧化
error_distribution = Counter(error_logs)
print(error_distribution.most_common())
# [('ERROR: Timeout', 3), ('ERROR: NotFound', 1), ('ERROR: ServerError', 1)]

最も多いエラーから順に表示できるので、問題の優先順位をつけやすくなります。

count()を使うときの注意点

便利なcount()メソッドですが、いくつか気をつけるポイントがあります。

大文字・小文字は区別される

文字列のcount()では、大文字と小文字を別物として扱います。

text = "Python python PYTHON"
print(text.count("python"))  # 1(小文字のみ)
print(text.count("Python"))  # 1(最初の大文字のみ)

大文字小文字を区別せずに数えたい場合は、事前に統一しましょう。

text = "Python python PYTHON"
# すべて小文字に変換してから数える
lowercase_text = text.lower()
print(lowercase_text.count("python"))  # 3

型の一致に注意

リストでは、数値と文字列は別物として扱われます。

mixed_list = [1, "1", 2, "2", 1, "1"]
print(mixed_list.count(1))    # 2(数値の1のみ)
print(mixed_list.count("1"))  # 2(文字列の"1"のみ)

データの型を意識して使うことが大切です。

count()をもっと便利に使うテクニック

最後に、count()を活用した実践的なテクニックを紹介します。

条件に合う要素を抽出する

count()の結果を使って、条件に合う要素だけを取り出すことができます。

messages = [
    "[ERROR] Database connection failed",
    "[INFO] Server started",
    "[ERROR] Invalid user input",
    "[WARNING] Memory usage high"
]

# エラーメッセージだけを抽出
error_messages = [msg for msg in messages if msg.count("[ERROR]") > 0]
print(error_messages)
# ['[ERROR] Database connection failed', '[ERROR] Invalid user input']

単語の頻度分析

文章を単語に分割してから、各単語の出現回数を調べることもできます。

sentence = "apple orange apple banana apple orange"
words = sentence.split()

# 各単語の出現回数を辞書にまとめる
word_freq = {}
for word in set(words):  # 重複を除いた単語リスト
    word_freq[word] = words.count(word)

print(word_freq)
# {'banana': 1, 'orange': 2, 'apple': 3}

パフォーマンスを意識した使い方

大量のデータを扱う場合、count()を何度も呼ぶより、一度のループで済ませる方が効率的です。

# 非効率な例
data = ["A", "B", "A", "C", "A", "B"] * 1000000
count_a = data.count("A")
count_b = data.count("B")
count_c = data.count("C")

# 効率的な例
from collections import Counter
counts = Counter(data)
count_a = counts["A"]
count_b = counts["B"]
count_c = counts["C"]

データ量が多い場合は、Counterを使う方が高速です。

まとめ

count()メソッドは、Pythonで「数を数える」ための基本的かつ強力なツールです。

文字列でもリストでも同じように使えて、コードをシンプルに保てます。

実務では、ログ分析やキーワード頻度の確認など、様々な場面で活躍します。

ただし、全要素を集計したい場合はCounterの方が便利なこともあるので、状況に応じて使い分けましょう。

まずはcount()から始めて、必要に応じてCounterも使えるようになると、データ分析の幅が広がります。

ぜひ実際のコードで試してみてください。

共有:

著者について

とまだ

とまだ

フルスタックエンジニア

Learning Next の創設者。Ruby on Rails と React を中心に、プログラミング教育に情熱を注いでいます。初心者が楽しく学べる環境作りを目指しています。

著者の詳細を見る →