【Python】countとは?初心者向けにわかりやすく徹底解説
はじめに
Pythonには、文字列やリストの要素数を数えるための便利なメソッドがいくつか用意されています。
中でも、count()
メソッドは扱いやすく、初心者でもすぐに使い始めることができます。
ただ、プログラミングを始めたばかりだと「count()って何をするもの?」とか「どうやって実務で使う?」といった疑問が出てくるかもしれません。
そのためこの記事では、Pythonのcount()
メソッドを中心に、役立つ具体例とともにわかりやすく解説します。
プログラミング未経験の皆さんにも理解しやすいように、なるべく専門用語を使いすぎないよう注意しつつ、実務での活用シーンも含めてまとめました。
ぜひ一緒にcount()
の使いどころを学んでいきましょう。
この記事を読むとわかること
- count()メソッドの基本的な使い方
- 文字列におけるcount()とリストにおけるcount()の違い
- 実務での活用シーンの例
- collections.Counterとの使い分けポイント
count()とは?
Pythonで開発をしていると、対象のデータや文字列の中に同じ要素がどれくらい含まれているかを知りたい場面があります。
そんなときに役立つのが、count()メソッドです。
とてもシンプルな書き方で実装できるため、初心者の方でもすぐに取り入れやすいでしょう。
count()メソッドは文字列やリストで同名のメソッドとして用意されているので、用途によって使い方を少し変えるだけでOKです。
ここからは、文字列のケースとリストのケースに分けて紹介します。
文字列のcount()
文字列で使用する場合は、次のような書き方になります。
text = "apple banana apple orange" result = text.count("apple") print(result) # 2
上記の例では、変数 text
に代入した文字列の中で "apple"
が出現する回数を count()
メソッドで数えています。
このコードを実行すると、結果として2が返ってきます。
部分文字列のカウント
文字列の場合、"apple"
のように明示的に文字列を指定すれば、その部分文字列が何回出現しているかを簡単に調べることができます。
たとえば "ana"
のような短い部分文字列を指定すると、その文字列が含まれる回数を教えてくれます。
text = "banana" print(text.count("ana")) # 2
この例では、"banana"
の中に"ana"
という部分が2回出てくるため、2という結果が表示されます。
実は"banana"
という文字列は、最初の3文字 "ban"
のあとに "ana"
が続き、そのあとにまた "ana"
が続く形になっているためです。
リストのcount()
リストの場合も、同じように count()
メソッドを呼び出すだけで指定した要素が何個あるかを確認できます。
書き方は以下のとおりです。
fruits = ["apple", "banana", "apple", "orange", "apple"] print(fruits.count("apple")) # 3
この例では、"apple"
という要素がリストに何個含まれているかを数えています。
"apple"
が合計3つあるので、出力される結果は3です。
リストに含まれるオブジェクトのカウント
リストには、文字列だけでなく数値や他のデータ型を入れることもあります。
数値を数える場合でも、同じ要領で使えます。
numbers = [1, 5, 1, 2, 1, 3] print(numbers.count(1)) # 3
この例では、リスト numbers
の中に 1
が何個含まれているかを出力します。
結果は3なので、コンソールには3と表示されます。
こうした形で、文字列でもリストでも共通してcount()
メソッドが使えるので便利です。
次の見出しでは、さらに具体的な使いどころを掘り下げていきます。
count()の具体的な使いどころ
プログラミングの初心者にとって、「ただ要素数を数えるだけなら何に使うの?」と思うかもしれません。
しかし実際の開発では、要素数のカウントが意外なところで大事になるケースがあります。
ここでは、文字列のサーチとリスト内のエラーログ解析という2つの場面を例に挙げて、count()の実務での活用イメージを紹介します。
文字列のサーチにおけるcount()の応用
ウェブサイトから取得した文章や、ユーザーが入力したテキストに対して、特定の単語がどれほど含まれているかを確かめたいことがあります。
例えばSEOや広告運用の現場では、キーワードの出現頻度をチェックしたいときに役立ちます。
text = """ appleバナナorangeリンゴbanana もう一度appleを登場させています。 """ keyword_jp = "apple" count_keyword_jp = text.count(keyword_jp) print(count_keyword_jp) # 2
上記のように、入力テキスト中で何回キーワードが出てくるかを数えることで、文章の内容をざっくり把握できます。
文章解析ツールなどを作る際の入り口として覚えておくと便利です。
リスト内のエラーログ解析
開発現場では、ログデータをリスト形式で扱うことが少なくありません。
例えば、サーバーのログやアプリケーションの動作記録をリストとして保持し、その中で特定のエラーコードやワーニングがどれくらい起きているかを把握したい場面があります。
logs = [ "ERROR: Something went wrong", "INFO: Service started", "WARNING: Low disk space", "ERROR: Connection lost", "INFO: Request received", "ERROR: Timeout" ] error_count = logs.count("ERROR: Something went wrong") # 1 print(error_count)
もちろん上のようにテキスト全体が一致した場合に限りますが、特定のエラー文が何回現れたかを数えられます。
もし少し違うエラー文が増える可能性があるなら、部分一致のようなロジックを入れる必要が出てきますが、まずは単純なケースでは簡単に件数を把握できるわけです。
こういった使い方があると、「エラーの回数が増えてきたら通知する」という機能を作成する際にも、比較的スムーズに導入できるでしょう。
collections.Counterとの違い
Pythonでは要素のカウントをする手段は、count()
メソッドだけではありません。
同じような目的で使われるクラスとしてcollections.Counterがあります。
この二つは似たような動作をするものの、用途によってはcount()
のほうがシンプルでわかりやすいこともあれば、Counterを使ったほうが一覧性が高いこともあります。
ここでは両者の違いを簡単に見ていきましょう。
Counterとは何か
collections.Counter
は、文字列やリストなどの要素をまとめて集計してくれる便利なクラスです。
例えばリスト内のすべての要素が何個ずつあるかを一括で調べたい場合などに重宝します。
from collections import Counter fruits = ["apple", "banana", "apple", "orange", "apple"] counter_result = Counter(fruits) print(counter_result) # Counter({'apple': 3, 'banana': 1, 'orange': 1})
上の例のように、Counter
を使うと瞬時にリスト内のすべての要素数を集計して、結果を辞書のような形式で返してくれます。
これを見れば、apple
が3個、banana
が1個、orange
が1個ということがひと目でわかります。
count()とCounterの使い分け
一方、count()
は「特定の要素がいくつあるか」だけを調べるのに向いています。
複数の要素をまとめて調べるような場合は、Counter
のほうが簡単かもしれません。
-
count()が便利なケース
- 単一の値が何個あるかだけを知りたいとき
- コードが短く、見通しがよくなる
-
Counterが便利なケース
- あらゆる要素が何個ずつあるかを確認したいとき
- リスト全体を俯瞰して分析したいとき
もし初心者の方が「ある要素が何個あるか」だけを調べたければ、count()で十分と感じると思います。
複数の要素をまとめて調べたいならCounterを使う、といった切り分けが自然な選択でしょう。
実務で役立つ活用シーン
ここからは、count()
を使った活用例の中でも、特に実務で応用しやすいものを紹介します。
ログ解析やキーワードの集計など、開発や運用の場面で役立つ形をイメージしてもらえると幸いです。
ログ解析におけるcount()の応用
先ほど少し触れたエラーログのカウント例に加えて、ログの内容を複数のエラー種別で集計するという応用があります。
たとえば簡単なログ解析スクリプトとして、下記のような形が考えられます。
logs = [ "ERROR: Something went wrong", "INFO: Service started", "ERROR: Connection lost", "WARNING: Low disk space", "ERROR: Timeout", "WARNING: High CPU usage", ] error_patterns = [ "ERROR: Something went wrong", "ERROR: Connection lost", "ERROR: Timeout" ] for pattern in error_patterns: count_error = logs.count(pattern) print(f"{pattern} : {count_error}")
このように、複数のパターンを1つ1つループ処理でチェックするだけでも、定型的なエラーの回数を素早く確認できます。
厳密にはログが増えるともっと高度な分析やデータベースを使った管理が必要になりますが、シンプルなケースならこれで十分な場合もあるでしょう。
キーワードの集計での活用
Webサイトの記事やユーザー投稿を分析する際に、「特定のキーワードが何回出てくるか」をサッと把握したいケースがあります。
たとえば、何かしらのフィードバックコメント一覧に対してキーワードを数えて、需要の高さを確かめるという方法などが挙げられます。
comments = [ "この商品、apple味がもっと濃いといいな", "banana味は甘さ控えめで好きです", "やっぱりappleが一番人気", "orange味が追加されるとうれしいですね" ] keyword = "apple" keyword_count = 0 for comment in comments: keyword_count += comment.count(keyword) print(keyword_count) # appleというキーワードが合計でいくつ含まれているか
この例では、一つひとつのコメントに対して count(keyword)
を実行し、その結果を keyword_count
に加算するという流れです。
部分文字列の出現数を合計したい場合には、こういったやり方もシンプルでわかりやすいでしょう。
count()を使うときの注意点
count()
はシンプルで使いやすいメソッドですが、いくつか注意すべきポイントがあります。
ここでは、大文字・小文字の扱いや要素の型にまつわる話を簡単にまとめました。
大文字・小文字の区別
文字列のcount()
は、大文字と小文字を区別します。
そのため、例えば "Apple"
と "apple"
は別物として扱われます。
text = "Apple apple APPLE" print(text.count("apple")) # 1 print(text.count("Apple")) # 1
もし大文字・小文字を同一視したいなら、事前にすべて小文字にそろえてからcount()
するといった方法が考えられます。
text.lower()
で文字列を小文字に変換しておけば、すべて小文字の状態で検索できるでしょう。
要素の型が正確に一致しているか
リストで使う際は、検索対象の要素の型が正確に一致していないと数を拾えません。
例えば numbers.count("1")
と numbers.count(1)
は違う結果になることがあります。
numbers = [1, "1", 2, "2", 1, "1"] print(numbers.count("1")) # 2 print(numbers.count(1)) # 2
この例では1と"1"が混在しているため、文字列か数値かという違いを意識してカウントを行う必要があります。
データを取り扱う際には、意図した型で値を扱うように注意するとよいでしょう。
文字列と数値を混在させたままだと、予期しないカウント結果になることがあります。
事前に型を統一するなど、データの形式を整理しておくことが大切です。
count()をより効果的に使うためのコツ
ここまでの内容を踏まえ、count()をより上手に使いこなすためのコツを紹介します。
少し工夫するだけでも、開発や運用の現場で役立つスクリプトが作りやすくなるはずです。
条件を組み合わせる
count()
は特定の値や部分文字列がどれだけあるかを調べるものですが、事前にリストをフィルタリングしたり、文字列を加工したりすると、さらに用途が広がります。
例えば、以下のように「含まれている文字列に特定のキーワードがあったら別の処理をする」ことも簡単にできます。
logs = [ "[ERROR] Something went wrong", "[INFO] Service started", "[ERROR] Connection lost", "[WARNING] Low disk space" ] error_logs = [log for log in logs if log.count("[ERROR]") > 0] print(error_logs) # ['[ERROR] Something went wrong', '[ERROR] Connection lost']
ここでは、count("[ERROR]") > 0
という条件を満たすログだけを抽出しています。
こうした使い方を覚えておくと、集計だけでなくデータ抽出にも応用可能です。
文字列を分割してからカウント
文中の単語を調べたい場合は、スペース区切りなどで文を分割し、その結果をリストとして扱うのもひとつの方法です。
こうすると、単語単位でのカウントがやりやすくなります。
sentence = "apple banana orange apple banana" words = sentence.split() # スペース区切りでリスト化する print(words) # ['apple', 'banana', 'orange', 'apple', 'banana'] apple_count = words.count("apple") print(apple_count) # 2
このように**split()とcount()**を組み合わせれば、文章が持つ単語の頻度を手軽に確認できます。
最初からリストとして管理できれば望ましいですが、文字列を分割して扱うパターンもよくあるので覚えておきましょう。
count()以外の「数える」手段
実際にPythonで「数える」処理をするときは、count()だけでなく他の書き方をする場合もあります。
代表的な方法としては、**len()**を使ってリストの要素数を一括で調べる方法や、for文で自力でカウントする方法などがあります。
ここでは、簡単にそれぞれの特徴を述べておきます。
len()で全要素数を取得
リストそのものの要素の総数を知りたいときは、len()
が便利です。
以下のように、リスト内の要素数を返してくれます。
numbers = [10, 20, 30, 40] print(len(numbers)) # 4
len()
は「特定の要素を数える」のではなく「全要素数」そのものを数えます。
求めたい値がリスト全体の大きさなら、count()
ではなくlen()
を使うのが一般的です。
for文などで独自カウント
特定の条件に合致する要素の数を知りたいときは、単純にfor文を使ってカウントを増やしていくこともあります。
例えば以下のようなケースです。
numbers = [1, 3, 5, 7, 2, 4, 6] count_even = 0 # 偶数をカウントするための変数 for num in numbers: if num % 2 == 0: # 偶数かどうか count_even += 1 print(count_even) # 偶数の個数を表示
ここでは偶数かどうかという条件付きでカウントを行っています。
count()は特定の要素を正確に探すのには向いていますが、条件付きのカウントには対応していません。
そのため、こうした条件ベースのカウントはfor文を回しながら自力で行うのが一般的です。
実際の現場で意識すべきこと
プログラミングの現場では、数を数えるという作業はログ解析やデータ集計など、さまざまな場面で必要となります。
ただし、実務ではデータの量が膨大であったり、文字列の種類が非常に多様であったりと、細かい考慮が必要になることがあります。
たとえば大量データを扱うなら、読み込みや検索自体に時間がかかるかもしれません。
その場合、最初から外部のデータベースや分析ツールを使うほうが適切なケースもあるでしょう。
とはいえ、初心者の皆さんが最初に組む集計スクリプトとしては、count()
メソッドを活用するのがシンプルです。
大規模なデータや複雑な分析が必要になるほど、専門ツールやデータベースとの連携が重要になります。
しかし最初の段階では、count()のようなシンプルなメソッドから慣れていくことをおすすめします。
また、実務のチームでは複数の開発者が同時にコードを編集します。
その際、誰が見てもわかりやすいロジックを使って数えることが大切です。
count()を使えば、「このコードは何をしたいのか」がひと目で伝わりやすいので、可読性を高める上でも有効でしょう。
まとめ
Pythonのcount()
メソッドは、文字列やリスト内に含まれる特定の要素の数を簡単に把握できる便利な仕組みです。
初心者でも気軽に取り組めるだけでなく、実務でもログ解析やキーワード分析など、いろいろな場面で使えます。
ただし、collections.Counter
との使い分けや、要素の型・大文字小文字の扱いなど、いくつか注意すべき点も存在します。
シンプルさがゆえに拡張性には限界があるので、大規模な分析が必要な場合は他の方法を検討するのもよいでしょう。
まずは、文字列やリストに対してcount()
を使いこなすところから始めると、Pythonのデータ操作の感覚をつかみやすくなります。
データを扱う基本的な工程として、ぜひ活用してみてください。