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番目の要素と重複しているため、削除されたリストが出力されています。
-
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文は
-
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」はそのまま残ります。また、リスト