【Python】リスト内の一意な値(ユニークな値)の個数を数える方法
はじめに
Pythonでリスト内に含まれる一意な値(重複のない値)の個数を求めたい場合、for文による反復処理と、リストのappendメソッドを組み合わせることで実現できます。
本記事では、実際のサンプルコードを交えながら、その仕組みと処理の流れをわかりやすく解説します。
サンプルコード
以下は、リスト内の一意な値の個数をカウントするプログラムの例です。
my_list = [12, 33, 33, 54, 84, 16, 16, 16, 58]
print("元のリスト:")
print(my_list)
filtered_list = []
elem_count = 0
for item in my_list:
if item not in filtered_list:
elem_count += 1
filtered_list.append(item)
print("一意な値の個数:")
print(elem_count)実行結果
元のリスト: [12, 33, 33, 54, 84, 16, 16, 16, 58] 一意な値の個数: 6
この例では、9個の要素を持つリストの中に、重複を除くと6種類の一意な値(12, 33, 54, 84, 16, 58)が存在していることが確認できます。
処理の流れの解説
まず、重複した値を含むリストを定義し、コンソールに表示します。
一意な値だけを格納するための空のリスト(filtered_list)を用意します。
一意な値の個数を記録するためのカウンタ変数を0で初期化します。
元のリストをfor文で1つずつ反復処理します。
各要素がfiltered_listに存在しない場合(=初めて見つかった値の場合)、カウンタを1増やし、その要素をfiltered_listに追加します。
すべての要素のチェックが完了すると、カウンタには一意な値の総数が格納されています。
最後に、その結果をコンソールへ出力します。
補足:setを使ったより簡潔な方法
Pythonでは、set(集合)型を利用すると、同じ処理をもっとシンプルに記述できます。
my_list = [12, 33, 33, 54, 84, 16, 16, 16, 58] result = len(set(my_list)) print(result) # 出力:6
setは重複する要素を保持しないデータ構造のため、リストをsetに変換するだけで重複が自動的に取り除かれます。あとはlen関数で要素数を取得すれば、一意な値の個数が求まります。ただし、setは要素の順序を保持しないため、順序が重要になるケースでは注意が必要です。
まとめ
リスト内の一意な値のカウントは、「存在確認+append」による反復処理でも実装できますが、実務ではsetやcollections.Counterといった標準機能を活用する方が、コードが簡潔になり処理効率も向上します。目的や要件に応じて、最適な方法を選択しましょう。
-
Pythonで選択リストの値に基づいて辞書のキーをフィルタリングする方法
Pythonで辞書(dict)を扱っていると、特定の条件に基づいて不要なキーを除外したり、必要なキーだけを抽出したい場面があります。本記事では、選択リスト(キーの候補リスト)の値をもとに、Pythonの辞書からキーをフィルタリングする方法を、2つのアプローチで解説します。方法1:for文とin演算子を使うまず、フィルタリングしたいキーをリストに格納します。続いて、リストの各要素を順に取り出し、その要素が対象の辞書に存在するかどうかをin演算子で確認します。存在が確認できたキーに対応する値だけを、リスト内包表記を使って新しいリストとしてまとめます。サンプルコードdictA= {Mon:Phy,T
-
【Python入門】リストから一意の値(重複しない要素)だけを抽出して出力する方法
リストが与えられたとき、その中から重複を除いた一意の値(ユニークな要素)だけを取り出して表示するのが、この記事の目的です。Pythonを使えば、初心者でも簡単に実装できる定番の処理なので、ぜひマスターしておきましょう。実行例入力:A = [1, 2, 3, 4, 2, 1, 9] 出力:[1, 2, 3, 4, 9]リスト内に同じ値が複数回現れていても、出力されるのはそれぞれ1回だけです。アルゴリズムステップ1:ユーザーからリストを入力として受け取る。 ステップ2:空のリストを作成する。 ステップ3:元のリストの全要素を順番に走査する。 ステップ4:その要素がすでに一意のリストに存在するかどう