Pythonのセットで重複を削除する方法(set()の活用)初心者向け完全ガイド
生徒
「Pythonで同じデータが何回も出てくるのを一発で消す方法ってありますか?」
先生
「Pythonではset()という機能を使えば、リストなどの中にある重複(同じ値)を簡単に削除できますよ。」
生徒
「重複ってそもそもどういう意味ですか?」
先生
「重複とは、同じ値や内容が繰り返し出てくることです。例えば、友達の名前を名簿に書いたら、同じ名前が2回入ってしまうような状態です。」
生徒
「なるほど!ではset()を使うと、それを自動で消してくれるんですね?」
先生
「そうです。それでは、set()の基本から見ていきましょう!」
1. Pythonのset()とは?初心者にもわかる基本
Python(パイソン)のset()は「集合(しゅうごう)」を作るための機能です。集合とは、数学で習った「同じものを含まないグループ」のことです。つまり、set()を使えば、自動的に同じ値が削除され、1つずつだけが残ります。
例えば、買い物リストに「りんご、みかん、りんご」と書いてあると、set()は重複している「りんご」を1つにまとめてくれます。
fruits = ["りんご", "みかん", "りんご"]
unique_fruits = set(fruits)
print(unique_fruits)
{'みかん', 'りんご'}
このように、set()を使うと重複がなくなり、スッキリとしたデータになります。
2. なぜset()で重複が削除されるのか
set()は、もともと「同じ値を持てない」というルールがあります。これは、名前の名簿や会員番号のリストのように、一人一人が必ず違う番号を持つ仕組みに似ています。そのため、同じ値が入ろうとすると、自動的に1つだけにまとめられます。
この特性を利用すると、面倒な「同じ値を探して削除する」作業を自分でしなくても済みます。
3. リストに戻す方法
set()を使うと、データは「集合型」という特殊な形に変わります。もし再びリストとして使いたい場合は、list()を使って変換します。
fruits = ["りんご", "みかん", "りんご"]
unique_fruits = list(set(fruits))
print(unique_fruits)
['みかん', 'りんご']
この方法を使えば、重複を削除した後も、リストとしてデータを扱えます。
4. 順番を保って重複を削除する方法
実はset()は順番を保証しません。そのため、元の並び順を保ちたい場合は少し工夫が必要です。以下のように、for文(繰り返し処理)を使うことで、順番を保ちながら重複を削除できます。
fruits = ["りんご", "みかん", "りんご", "バナナ"]
unique_fruits = []
for fruit in fruits:
if fruit not in unique_fruits:
unique_fruits.append(fruit)
print(unique_fruits)
['りんご', 'みかん', 'バナナ']
5. 文字列の重複を削除する応用例
set()はリストだけでなく、文字列の重複も削除できます。例えば「banana」という文字列から重複する文字を消すこともできます。
text = "banana"
unique_chars = set(text)
print(unique_chars)
{'a', 'n', 'b'}
ただし、この場合も順番は保証されません。順番を保ちたい場合は、先ほどのリストの方法を応用します。
6. プログラミング初心者が覚えておくべきポイント
set()は「重複を削除する」最も簡単な方法- 順番が必要な場合はリスト変換や
for文を使う - 文字列や数字、あらゆるデータに使える
特にデータ整理や検索機能を作るときに役立ちます。Python初心者でも、set()を覚えればデータの重複に悩まされることが少なくなります。
まとめ
setを使った重複削除の考え方を振り返る
この記事では、Pythonのsetを使って重複データを削除する方法について、初心者向けに基礎から応用までを順番に解説してきました。 プログラミングを始めたばかりの頃は、リストの中に同じ値が何度も入ってしまい、 どうやって整理すればよいのか分からずに悩むことがよくあります。 そのような場面で活躍するのが、Pythonの集合型であるsetです。
setは「同じ値を持てない」という性質を持っているため、 リストや文字列をsetに変換するだけで自動的に重複が削除されます。 自分でfor文を書いて同じ値を探し、条件分岐で削除するといった複雑な処理をしなくても、 シンプルな書き方でデータを整理できる点が大きな魅力です。 Pythonでデータ処理を行う上で、setは非常に基本でありながら実用性の高い機能だと言えます。
順番と重複削除をどう考えるか
一方で、setには順番を保持しないという特徴があります。 そのため、単純にsetを使うと、元のリストの並び順が変わってしまうことがあります。 データの順番が重要な場面では、setだけに頼らず、 for文とリストを組み合わせて順番を保ちながら重複を削除する方法を選ぶ必要があります。
このように、setは万能ではありませんが、 「重複をなくしたい」「同じ値が含まれているかを判定したい」といった目的には非常に向いています。 状況に応じて、setを使うのか、リスト処理を使うのかを判断できるようになることが、 Python初心者から一歩成長するための大切なポイントです。
まとめとしてのサンプルプログラム
numbers = [1, 2, 3, 2, 4, 1, 5]
unique_numbers = list(set(numbers))
print(unique_numbers)
ordered_unique_numbers = []
for n in numbers:
if n not in ordered_unique_numbers:
ordered_unique_numbers.append(n)
print(ordered_unique_numbers)
このサンプルでは、setを使って一気に重複を削除する方法と、 for文を使って順番を保ちながら重複を削除する方法の両方を確認できます。 実際のプログラムでは、データの性質や目的に合わせて、 どちらの方法が適しているかを選ぶことが重要です。
生徒
「setを使うと、こんなに簡単に重複を消せるんですね。 今までfor文で一つ一つチェックしていたので、すごく楽に感じました」
先生
「そうですね。setは重複削除の定番です。 Pythonでは、目的に合った型を選ぶことで、コードが一気に分かりやすくなります」
生徒
「順番が変わることもある、という点も理解できました。 状況によって使い分けるのが大事なんですね」
先生
「その通りです。 今回学んだsetの使い方は、データ整理や検索処理など、いろいろな場面で役立ちます。 ぜひ実際のコードでも積極的に使ってみてください」