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

【Python入門】リストから一意の値(重複しない要素)だけを抽出して出力する方法

リストが与えられたとき、その中から重複を除いた一意の値(ユニークな要素)だけを取り出して表示するのが、この記事の目的です。Pythonを使えば、初心者でも簡単に実装できる定番の処理なので、ぜひマスターしておきましょう。

実行例

入力:A = [1, 2, 3, 4, 2, 1, 9]
出力:[1, 2, 3, 4, 9]

リスト内に同じ値が複数回現れていても、出力されるのはそれぞれ1回だけです。

アルゴリズム

ステップ1:ユーザーからリストを入力として受け取る。
ステップ2:空のリストを作成する。
ステップ3:元のリストの全要素を順番に走査する。
ステップ4:その要素がすでに一意のリストに存在するかどうかを確認する。
ステップ5:存在しない場合のみ、一意のリストへ要素を追加していく。
ステップ6:最終的なリストを表示する。

サンプルコード

# リストから一意の値を出力するPythonプログラム

def unique(A):
    # 空のリストを初期化
    uniquevalues = []

    # リストを走査
    for i in A:
        # まだ登録されていない値かどうかを確認
        if i not in uniquevalues:
            uniquevalues.append(i)

    # 一意の値をすべて表示
    for i in uniquevalues:
        print(i)

# ドライバーコード
A = list()
n = int(input("リストのサイズを入力してください:"))
print("リストの要素を入力してください:")
for i in range(n):
    k = int(input(""))
    A.append(k)

print("リストから抽出した一意の値は次のとおりです:")
unique(A)

実行結果

リストのサイズを入力してください:6
リストの要素を入力してください:
1
2
5
2
1
7
リストから抽出した一意の値は次のとおりです:
1
2
5
7

補足:もっと簡単に書く方法

上記の方法は処理の流れが分かりやすい反面、inによる存在確認はリストが大きくなると遅くなるという欠点があります。実務では、以下のようにset()dict.fromkeys()を使うと簡潔に書けます。

# set()を使う方法(順序は保証されない)
unique_values = list(set(A))

# dict.fromkeys()を使う方法(元の順序を保持)
unique_values = list(dict.fromkeys(A))

Python 3.7以降では辞書が挿入順を保持するため、dict.fromkeys(A)を使えば重複を削除しつつ元の並び順を維持できます。用途に応じて使い分けるとよいでしょう。

  1. Pythonでリストから重複する要素を抽出して表示する方法

    この記事では、数値のリストの中から重複している要素(2回以上出現する、リスト内で一意ではない要素)をすべて抽出して表示するPythonプログラムを解説します。実行例入力: given_list = [3, 6, 9, 12, 3, 30, 15, 9, 45, 36, 12] 出力: desired_output = [3, 9, 12] 入力: given_list = [-27, 4, 29, -27, -2, -99, 123, 499, -99] 出力: desired_output = [-27, -99]負の数値が含まれる場合でも正しく動作することがわかります。重複要素を検出する

  2. Pythonでリストのすべてのサブリストを生成して出力する方法

    リストが与えられたとき、そのリストに含まれるすべてのサブリスト(部分リスト)を生成して出力するプログラムを紹介します。要素数 n のリストの場合、空のリストを含めるとサブリストの総数は n×(n+1)/2+1 個になります。 実行例 入力 : list = [1, 2, 3] 出力 : [], [1], [1, 2], [1, 2, 3], [2], [2, 3], [3] アルゴリズム 考え方はシンプルです。開始位置 i と終了位置 j の組み合わせをすべて試し、スライスで部分リストを取り出します。 ステップ1 : 対象となるリストを用意します。 ステップ2 : 結果を格納するため、最