1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Python3のlistにおける重複した要素を削除する方法

Last updated at Posted at 2020-03-12

リストの中から重複をしている要素の削除

このリストを書こうと思った理由としては、要素が重複していないリストを作成する際に自身は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]
1
0
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?