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

Pythonで整数配列の重複を除去し、個別の要素だけを出力する方法

整数型の配列が与えられ、その中には重複した要素が含まれている場合があります。この記事では、重複を取り除いて個別(ユニーク)な値だけを出力するPythonプログラムを解説します。

実行例

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

アルゴリズム

このプログラムは次の手順で動作します。

  1. 配列の要素を入力として受け取ります。
  2. 各要素を先頭から順番に1つずつ取り出します。
  3. 取り出した要素が、それ以前にすでに出力されたものかどうかを確認します。
  4. 初期値0のフラグ変数を用意し、すでに表示済みなら1、未表示なら0のままにします。
  5. フラグが0のままだった要素(=初めて登場した要素)のみを出力します。

サンプルコード

# Pythonプログラム:指定された配列内の
# すべての個別の要素を出力する
def distinctelement(A, n1):
    print("Distinct Elements are ::>")
    for i in range(0, n1):
        c = 0
        for j in range(0, i):
            if (A[i] == A[j]):
                c = 1
                break
        if (c == 0):
            print(A[i])

# ドライバーコード
A = list()
n1 = int(input("Enter the size of the List ::"))
print("Enter the Element of List ::")
for i in range(int(n1)):
    k = int(input(""))
    A.append(k)
distinctelement(A, n1)

コードのポイント

関数 distinctelement() では、二重ループを使って現在注目している要素 A[i] と、それより前のすべての要素 A[j] を比較しています。同じ値が見つかればフラグ c を1にして内側のループを抜けます。最後まで c == 0 のままであれば、その要素は初めて現れたものなので出力対象となります。

実行結果

Enter the size of the List ::4
Enter the Element of List ::
1
2
2
4
Distinct Elements are ::>
1
2
4

補足:set()を使ったよりシンプルな方法

実際の開発では、組み込みの set()dict.fromkeys() を活用することで、より短く記述できます。

A = [1, 2, 3, 4, 2, 3, 5, 6]

# 重複を除去(順序は保証されない)
print(set(A))

# 元の順序を保ったまま重複を除去
print(list(dict.fromkeys(A)))  # [1, 2, 3, 4, 5, 6]

計算量の観点では、二重ループによる手法はO(n²)、set() を使う方法は平均O(n)となるため、扱うデータ量が多い場合は後者のほうが効率的です。アルゴリズムの仕組みを理解する目的では前者、実用性を重視する場合は後者を選ぶとよいでしょう。

  1. 指定された文字列のすべての順列を出力するPythonプログラム

    本記事では、以下の問題に対する解決策について詳しく学んでいきます。 問題文 1つの文字列が与えられたとき、その文字列から作成できるすべての順列(並べ替えの組み合わせ)を表示する必要があります。 それでは、以下の実装例で具体的な解決策を見ていきましょう。 実装例 # リストを文字列に変換 def toString(List): return .join(List) # 順列の生成 def permute(a, l, r): if l == r: print(toString(a)) else: for i in range(l, r +

  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 : 結果を格納するため、最