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

Pythonでタプルのリストから重複するタプルを削除する方法

タプルのリストから重複するタプルを削除したい場合、ループany関数enumerate関数を組み合わせることで実現できます。

前提知識:使う関数の役割

any関数は、イテラブル(反復可能オブジェクト)内の値が1つでもTrueであれば「True」を返し、すべてFalseであれば「False」を返す組み込み関数です。

enumerate関数は、指定したイテラブルに対してカウンター(インデックス番号)を付加しながら要素を取り出せるようにする関数です。

なお、Pythonのリストは整数・浮動小数点数・文字列など、異なるデータ型の値を混在させて格納できる柔軟なデータ構造です。タプルのリストとは、リストの中に複数のタプルが格納された形のデータを指します。

サンプルコード

以下に、実際の実装例を示します。

def delete_duplicate(my_lst):  
   return [[a, b] for i, [a, b] in enumerate(my_lst)
   if not any(c == b for _, c in my_lst[:i])]
     
my_list = [(23, 45), (25, 17), (35, 67), (25, 17)]

print("The list of tuples is")
print(my_list)
print("The function to remove duplicates is called")
print(delete_duplicate(my_list))

実行結果

The list of tuples is
[(23, 45), (25, 17), (35, 67), (25, 17)]
The function to remove duplicates is called
[[23, 45], [25, 17], [35, 67]]

コードの解説

  • delete_duplicateという名前の関数を定義し、引数としてタプルのリストを受け取ります。
  • enumerate関数でタプルのリストを走査しながら、any関数を使って「それより前の要素に同じ値が存在するかどうか」を判定します。
  • 重複していない要素だけを新しいリストとして返します。
  • 重複を含むタプルのリストを定義し、コンソールに表示します。
  • 定義したリストを引数に関数を呼び出します。
  • 重複が除去された結果がコンソールに出力されます。

この例では、入力リスト [(23, 45), (25, 17), (35, 67), (25, 17)] のうち、最後の (25, 17) が2番目の要素と重複しているため、削除されたリストが出力されています。

  1. Pythonでインデックスを指定してリストから要素を削除する方法

    Pythonでリストからインデックスを指定して要素を削除するには、主に2つの方法があります。del文を使う方法と、pop()メソッドを使う方法です。 del文で要素を削除する del文は、削除したい要素のインデックスを指定して使用します。指定した位置の要素がリストから取り除かれます。 >>> L1=[11,22,33,44,55,66,77] >>> del L1[2] >>> L1 [11, 22, 44, 55, 66, 77] 上記の例では、インデックス2(3番目の要素「33」)が削除され、リストの要素数が1つ減っています。del文は

  2. Pythonでリストからオブジェクトを削除する方法|remove・del・popの違いと使い分け

    Pythonでリストからオブジェクト(要素)を削除するには、主にremove()・del・pop()という3つの方法があります。それぞれ挙動が異なるため、目的に応じて使い分けることが重要です。 1. remove():値を指定して削除する remove()メソッドは、引数に指定した値に一致する最初の要素をリストから削除します。インデックスではなく値そのものを指定する点が特徴です。 使用例 a = [3, 2, 3, 2] a.remove(3) print(a) 実行結果 [2, 3, 2] この例では、最初に出現する「3」だけが削除され、2つ目の「3」はそのまま残ります。また、リスト