リストの中から重複をしている要素の削除
このリストを書こうと思った理由としては、要素が重複していないリストを作成する際に自身はremove()を用いた要素の削除を行っていました。自分はremove()を用いれば指定した値はすべて削除してくれるものだと勘違いしていました。
l = [1, 2, 3, 4, 1]
l.remove(1)
print(l)
#[2, 3, 4, 1]
このように一番最初に出てきた指定をした値の削除を行うことが出来ます。しかしこのコードだと、削除を行うことができるのは一つだけのため以下のような挙動が起きてしまいます。
l = [1, 2, 3, 4, 1, 1]
l.remove(1)
print(l)
#[2, 3, 4, 1, 1]
そのため、重複をしていないリストを作成するためには以下のようなコードにするべきです。
l = [3, 4, 3, 2, 5, 4, 3]
l_u = []
for i in l:
if i not in l_u:
l_u.append(i)
#[3, 4, 2, 5]
これによって要素の重複していなリストの作成を行うことが出来ます。
参考にしたサイト
https://www.lifewithpython.com/2013/11/python-remove-duplicates-from-lists.html
https://note.nkmk.me/python-list-clear-pop-remove-del/
###追記
コメントをいただいたため追記します。
以下のコードの方が上記に記載したコードよりも高速に実行することが出来るそうです。
また、順序も保存を行うことが出来ます。
l = [3, 4, 3, 2, 5, 4, 3]
print(sorted(set(l), key=l.index))
#[3, 4, 2, 5]