【Python】リストで検索にマッチする要素数をカウントする方法

この記事では、Pythonのリスト内で特定の要素を検索し、その要素の数をカウントする方法について解説します。

単純な方法からリスト内包表記や組み込み関数、さらには複数の条件を組み合わせた方法まで、様々なアプローチを紹介します。

目次から探す

単純な方法で検索にマッチする要素数をカウントする

リスト内の要素を順番に調べて、検索にマッチする要素の数をカウントする方法です。

以下のような手順で実装します。

  1. カウンター変数を初期化します。
  2. リスト内の要素を順番に取り出します。
  3. 取り出した要素が検索にマッチする場合、カウンター変数をインクリメントします。
  4. 全ての要素を調べ終わったら、カウンター変数の値を出力します。

以下は、リスト内の要素が整数であり、検索する要素も整数の場合の例です。

def count_matching_elements(lst, target):
    count = 0
    for element in lst:
        if element == target:
            count += 1
    return count

# 使用例
my_list = [1, 2, 3, 4, 5, 2, 2]
target_element = 2
result = count_matching_elements(my_list, target_element)
print(f"リスト内の要素 {target_element} の数: {result}")
リスト内の要素 2 の数: 3

検索する要素が文字列や他のデータ型の場合でも同様の方法でカウントすることができます。

リスト内包表記を使用して検索にマッチする要素数をカウントする

リスト内包表記を使用することで、簡潔に検索にマッチする要素の数をカウントすることができます。

以下のような形式で実装します。

def count_matching_elements(lst, target):
    return sum(1 for element in lst if element == target)

# 使用例
my_list = [1, 2, 3, 4, 5, 2, 2]
target_element = 2
result = count_matching_elements(my_list, target_element)
print(f"リスト内の要素 {target_element} の数: {result}")
リスト内の要素 2 の数: 3

リスト内包表記は、リスト内の要素を一つずつ取り出して条件に合致する要素だけを選択し、新しいリストを作成する方法です。

上記の例では、sum(1 for element in lst if element == target)の部分で、リスト内の要素が条件に合致する場合に1を返し、それらの1の合計を計算しています。

filter() 関数を使用して検索にマッチする要素数をカウントする

filter() 関数を使用することで、リスト内の要素から条件に合致する要素だけを抽出し、新しいリストを作成することができます。

以下のような形式で実装します。

def count_matching_elements(lst, target):
    filtered_list = list(filter(lambda x: x == target, lst))
    return len(filtered_list)

# 使用例
my_list = [1, 2, 3, 4, 5, 2, 2]
target_element = 2
result = count_matching_elements(my_list, target_element)
print(f"リスト内の要素 {target_element} の数: {result}")
リスト内の要素 2 の数: 3

上記の例では、filter(lambda x: x == target, lst)の部分で、リスト内の要素が条件に合致する場合にTrueを返し、それらの要素だけを抽出して新しいリストを作成しています。

その後、len()関数を使用して新しいリストの要素数を取得しています。

組み込み関数を使用して検索にマッチする要素数をカウントする

組み込み関数のcount()を使用することで、リスト内の要素の中で指定した要素の数をカウントすることができます。

以下のような形式で実装します。

def count_matching_elements(lst, target):
    return lst.count(target)

# 使用例
my_list = [1, 2, 3, 4, 5, 2, 2]
target_element = 2
result = count_matching_elements(my_list, target_element)
print(f"リスト内の要素 {target_element} の数: {result}")
リスト内の要素 2 の数: 3

上記の例では、lst.count(target)の部分で、リスト内の要素の中で指定した要素の数をカウントしています。

リスト内の文字列を検索してマッチする要素数をカウントする方法

リスト内の文字列を検索して、指定した文字列にマッチする要素の数をカウントする方法です。

以下のような手順で実装します。

  1. カウンター変数を初期化します。
  2. リスト内の要素を順番に取り出します。
  3. 取り出した要素が文字列である場合、指定した文字列と一致するかどうかを調べます。
  4. 一致する場合、カウンター変数をインクリメントします。
  5. 全ての要素を調べ終わったら、カウンター変数の値を出力します。

以下は、リスト内の要素が文字列であり、検索する文字列も文字列の場合の例です。

def count_matching_elements(lst, target):
    count = 0
    for element in lst:
        if isinstance(element, str) and element == target:
            count += 1
    return count

# 使用例
my_list = ["apple", "banana", "apple", "orange", "apple"]
target_element = "apple"
result = count_matching_elements(my_list, target_element)
print(f"リスト内の要素 {target_element} の数: {result}")
リスト内の要素 apple の数: 3

複数の条件で検索にマッチする要素数をカウントする方法

複数の条件を組み合わせて、検索にマッチする要素の数をカウントする方法です。

以下のような手順で実装します。

  1. カウンター変数を初期化します。
  2. リスト内の要素を順番に取り出します。
  3. 取り出した要素が条件に合致する場合、カウンター変数をインクリメントします。
  4. 全ての要素を調べ終わったら、カウンター変数の値を出力します。

以下は、リスト内の要素が整数であり、検索する要素も整数でかつ偶数の場合の例です。

def count_matching_elements(lst, target):
    count = 0
    for element in lst:
        if isinstance(element, int) and element == target and element % 2 == 0:
            count += 1
    return count

# 使用例
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
target_element = 2
result = count_matching_elements(my_list, target_element)
print(f"リスト内の要素 {target_element} の数: {result}")
リスト内の要素 2 の数: 1

これらの方法を使用して、条件にマッチする要素の個数をカウントすることができます。

目次から探す