list からの重複した要素の削除

Python

Python の list の重複要素の削除方法には、下記の2種類があります。

  • 元のlistの順序を保持しない: set()
  • 元のlistの順序を保持する: sorted()

元のlistの順序を保持しない: set()

set は重複した要素をもたない要素の集合で、順序も持ちません。この特性を生かして、list を set() 渡して set に変換することで、重複した要素が削除されます。

test_list = [2, 0, 0, 2]

print(set(test_list))
# {0, 2}

list に戻したい場合は、list() で戻すことができます。

print(list(set(test_list)))
# [0, 2]

ただし、この方法の場合、元の list の順番を保持しませんので、元の list の順番を保持する必要がある場合には使用することができません。

元のlistの順序を保持する: sorted()

元の list の順番を保持した状態で、重複した要素を削除したい場合には、key として index を使用して sortd() を使用します。

test_list = [2, 0, 0, 2]

print(sorted(set(test_list), key=test_list.index))
# [2, 0]

コメント

タイトルとURLをコピーしました