このページはlistクラスのcountメソッドについて解説したページです。
strクラス(文字列)のcountメソッドについては
count(strクラス)の使用方法
を参照してください。
count(リスト、配列)
このページでは豊富な例を用いてPythonの listクラス のcountの使い方を学ぶことができます。
countは
listクラス
のメソッドの1つです。
第1引数に与えた値が呼び出し元のlist(リスト)の中にいくつ含まれているかをカウントし、その値を整数(intオブジェクト)として返します。
TL;DR
基本
# 引数で与えた値をカウントする
list1 = ['py', 'js', 'go', 'ts', 'py', 'py']
count1 = list1.count('py')
print(count1)
==> 3
# intの場合
list2 = [1, 0, 2, 1, 4, 0, 3, 2]
count2 = list2.count(0)
print(count2)
==> 2
# boolの場合
list3 = [True, False, False, True]
print(list3.count(True))
==> 2
# tupleの場合
list4 = [(0, 1), (2, 3), (0, 1, 5), (0, 1, 2)]
target_tuple = (0, 1)
count3 = list4.count(target_tuple)
print(count3)
==> 1
# dict(辞書)の場合
list5 = [{'name': 'Joshua'}, {'name': 'Emma'}, {'name': 'Emma'}]
target_dict = {'name': 'Emma'}
count4 = list5.count(target_dict)
print(count4)
==> 2
# 同一要素数が2つ以上の要素のみ抽出
list6 = ['Python', 'JS', 'Python', 'TS', 'GO', 'GO', 'Python']
# リスト内包表記を用いて抽出
filtered_list1 = [e for e in list6 if list6.count(e) >= 2]
print(filtered_list1)
==> ['Python', 'Python', 'GO', 'GO', 'Python']
# リスト内包表記を用いない表現
filtered_list2 = []
for e in list6:
if list6.count(e) >= 2:
filtered_list2.append(e)
print(filtered_list2)
==> ['Python', 'Python', 'GO', 'GO', 'Python']
# 独自クラスの場合
class Language:
def __init__(self, name):
self.name = name
list7 = [Language('python'), Language('golang')]
language1 = Language('python')
count5 = list7.count(language1)
# プロパティ値が同じでも異なるオブジェクトなのでカウントは0
print(count5)
==> 0
解説
基本
countは引数として与えた値が呼び出し元のlist(リスト)にいくつ含まれているかをカウントします。
引数としてはどんな型のオブジェクトでも取ることができます。
カウントするオブジェクトの型により、各要素と引数で与えた値が一致するかどうかは異なります。
プロパティ値が同一であることと、 比較するオブジェクトが同一であることは一致しない場合があることに注意してください。 (TL;DRの例を参考にしてください。)
list1 = [0, 0, 0, 0, 1]
count1 = list1.count(0)
print(count1)
==> 4
list2 = ['A', 'B', 'B', 'C']
print(list2.count('C'))
==> 1
# 型が区別してカウントされる
list3 = [0, '0']
print(list3.count('0'))
==> 1
list4 = [{'id': 1}, {'id': 1}, {'id': 3}]
count2 = list4.count({'id': 1})
print(count2)
==> 2
# 同一要素がないものを抽出
list5 = [1, 1, 1, 2, 2, 3, 4, 5]
# リスト内包表記
filtered_list1 = [element for element in list5 if list5.count(element) < 2]
print(filtered_list1)
==> [3, 4, 5]
# リスト内包表記を用いない表現
filtered_list2 = []
for element in list5:
if list5.count(element) < 2:
filtered_list2.append(element)
print(filtered_list2)
==> [3, 4, 5]