Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonのリスト内で特定の文字列を含む要素をカウントする方法

Pythonでは、リストの各要素の中に、別の変数が持つ特定の文字列が含まれているかどうかを調べたい場面がよくあります。本記事では、指定した文字列がリストの要素として何回出現するかを数えるための、複数の実装方法をわかりやすく解説します。

range関数とlen関数を使う方法

まずは最も基本的なアプローチです。range関数とlen関数を組み合わせてリストの長さ分だけループ処理を行い、in演算子で各要素に目的の文字列が含まれているかを判定します。条件を満たすたびに、初期値0のカウント用変数をインクリメントしていく仕組みです。

コード例

Alist = ['Mon', 'Wed', 'Mon', 'Tue', 'Thu']
Bstring = 'Mon'

# 対象のリスト
print("対象のリスト:\n", Alist)
print("チェックする文字列:\n", Bstring)
count = 0
for i in range(len(Alist)):
    if Bstring in Alist[i]:
        count += 1
print("リスト内に出現した回数:\n", count)

実行結果

上記のコードを実行すると、次のような結果が得られます。

対象のリスト:
['Mon', 'Wed', 'Mon', 'Tue', 'Thu']
チェックする文字列:
Mon
リスト内に出現した回数:
2

sum関数を使う方法

より簡潔に書きたい場合はsum関数が便利です。ジェネレータ式の中でin演算子によるマッチングを行い、条件が真(True)になった回数をそのまま合計することでカウントを取得できます。ループやカウンタ変数を明示的に書く必要がないため、コードが非常に読みやすくなります。

コード例

Alist = ['Mon', 'Wed', 'Mon', 'Tue', 'Thu']
Bstring = 'Mon'
# 対象のリスト
print("対象のリスト:\n", Alist)
print("チェックする文字列:\n", Bstring)
count = sum(Bstring in item for item in Alist)
print("リスト内に出現した回数:\n", count)

実行結果

上記のコードを実行すると、次のような結果が得られます。

対象のリスト:
['Mon', 'Wed', 'Mon', 'Tue', 'Thu']
チェックする文字列:
Mon
リスト内に出現した回数:
2

Counterとchainを使う方法

標準ライブラリのitertoolsモジュールとcollectionsモジュールには、それぞれchain関数とCounterクラスが用意されています。これらを組み合わせると、リストの各要素を構成する文字を展開し、特定の文字が合計何回現れるかを効率的に集計できます。単一の文字だけでなく、部分文字列の出現頻度を調べたい場合にも応用できる強力な手法です。

コード例

from itertools import chain
from collections import Counter
Alist = ['Mon', 'Wed', 'Mon', 'Tue', 'Thu']
Bstring = 'M'
# 対象のリスト
print("対象のリスト:\n", Alist)
print("チェックする文字列:\n", Bstring)
cnt = Counter(chain.from_iterable(set(i) for i in Alist))['M']
print("リスト内に出現した回数:\n", cnt)

実行結果

上記のコードを実行すると、次のような結果が得られます。

対象のリスト:
['Mon', 'Wed', 'Mon', 'Tue', 'Thu']
チェックする文字列:
M
リスト内に出現した回数:
2

まとめ

このように、Pythonでリスト内の特定の文字列の出現回数を数える方法は複数あります。シンプルで理解しやすいのはrangelenを使った方法、コード量を抑えたいならsum関数、文字単位の高度な集計が必要ならCounterchainの組み合わせが適しています。用途や可読性の要件に応じて、最適な手法を選択してください。

  1. セットを使って文字列内の母音の数をカウントするPythonプログラム

    本記事では、Pythonを使って文字列内に含まれる母音の数をカウントする方法について解説します。セット(set)を活用した効率的な実装を中心に、初心者の方にもわかりやすく説明していきます。 問題の概要 問題文:任意の文字列が与えられたとき、その文字列に含まれる母音の数をセットを使って数えます。 基本的なアプローチとしては、文字列全体を先頭から順に走査し、各文字が母音であるかどうかを判定します。母音であればカウントを1ずつ増やしていき、最終的な合計を出力します。 実装例 def vowel_count(str_): count = 0 # 母音をセットとして定義 vowe

  2. Pythonでリスト内の要素のインデックス(位置)を取得する方法

    Pythonでは、リスト(シーケンス型全般)に含まれる要素の位置を取得するには、index()メソッドを使用します。このメソッドは、指定した要素が最初に出現するインデックスを返します。index()メソッドの基本的な使い方リストに対してindex()を呼び出し、引数に検索したい要素を指定します。>>> L1=[45, 32, 100, 10, 24, 56] >>> L1.index(24) 4この例では、リストL1の中から値24を検索し、その位置であるインデックス4が返されています。Pythonのインデックスは0から始まるため、5番目の要素がインデックス4