【Python】リスト内の連続した同一要素をカウントする方法
リストの中に連続して現れる同一要素が何種類あるかをカウントしたい場合には、forループによる反復処理と、append()メソッド、set()メソッドを組み合わせることで簡単に実装できます。
サンプルコード
以下に具体的な実装例を示します。
my_list = [24, 24, 24, 15, 15, 64, 64, 71, 13, 95, 100]
print("The list is :")
print(my_list)
my_result = []
for index in range(0, len(my_list) - 1):
if my_list[index] == my_list[index + 1]:
my_result.append(my_list[index])
my_result = len(list(set(my_result)))
print("The result is :")
print(my_result)
実行結果
The list is : [24, 24, 24, 15, 15, 64, 64, 71, 13, 95, 100] The result is : 3
コードの解説
まず対象となるリストを定義し、その内容をコンソールに出力します。
次に、条件に合致した要素を格納するための空のリスト
my_resultを用意します。forループでリストを先頭から順に走査し、隣り合う2つの要素(インデックスindexの要素とインデックスindex + 1の要素)が等しいかどうかを判定します。等しい場合、その要素を空のリストへappend()メソッドで追加します。この例では「24」「15」「64」が該当します。集めた要素を
set()で集合に変換することで重複を排除し、さらにlist()でリスト化してからlen()で要素数を取得し、変数に代入します。この結果「3」がコンソールに表示されます。つまり、連続して2回以上出現した値は「24」「15」「64」の3種類であることを意味します。
-
Pythonのリストで連続する要素をペアにする方法
Pythonでデータ分析を行っていると、リスト内の隣接する(連続する)要素同士をペアとして取り出したい場面に出会うことがあります。本記事では、この処理を実現するための代表的な2つの方法を、サンプルコードとともにわかりやすく解説します。インデックスとrangeを組み合わせる方法まずは、リストの連続するインデックスを組み合わせてペアを作る式を設計する方法です。range関数に「リストの長さ − 1」を渡すことで、ペアリングを繰り返す最大回数を決定します。これにより、最後の要素にアクセスする際に範囲外エラーが発生するのを防いでいます。サンプルコードlistA = [51,23,11,45] # 対象
-
Pythonでリスト内の一意な要素をカウントする方法
Pythonのリストには、同じ要素が複数含まれていることがあります。len()関数でリストの長さを取得すると、重複した要素も含めた全体の長さが返されます。しかし、場合によっては重複を除いた「一意な要素(ユニークな要素)」の数だけを知りたいこともあるでしょう。この記事では、collectionsモジュールのCounterクラスを使って、リスト内の個別の要素数を取得する方法を解説します。CounterクラスとはcollectionsモジュールのCounterは、ハッシュ可能なオブジェクトをカウントするためのdictのサブクラスです。要素が辞書のキーとして格納され、その出現回数が辞書の値として保存さ