Python セット
Python には、データを整理するためのいくつかの組み込みデータ型が用意されています。これらの構造には、リスト、辞書、タプル、そして セット が含まれます。
Python 3 の ドキュメント より
セットは、重複する要素のない順序付けられていないコレクションです。基本的な用途には、メンバーシップのテストや重複エントリの削除があります。
より詳細な参照については、Python Sets: What, Why and How をお読みください。
セットの初期化
セットを作成するには、波括弧 {} を使用する方法と、組み込み関数 set() を使用する方法の 2 つがあります。
空のセット
セットを作成する際は、空の波括弧 {} を使用しないように注意してください。そうしないと、代わりに空の辞書になってしまいます。
# 波括弧または set() 関数を使用してセットを作成
s = {1, 2, 3} # 波括弧を使用
s = set([1, 2, 3]) # set() コンストラクタを使用
# 警告:空の {} はセットではなく辞書を作成します
s = {} # これはセットではなく辞書を作成します
type(s) # <class 'dict'> を返します
<class 'dict'>
一意な要素の順序付けられていないコレクション
セットは重複する値を自動的に削除します。
# セットは重複を自動的に削除します
s = {1, 2, 3, 2, 3, 4} # 重複は削除されます
s # {1, 2, 3, 4} を返します
{1, 2, 3, 4}
ログインしてこのクイズに回答し、学習の進捗を追跡できます
そして、順序付けられていないデータ型であるため、インデックス指定はできません。
s = {1, 2, 3}
s[0]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'set' object does not support indexing
set add と update
add() メソッドを使用して、セットに単一の要素を追加できます。
# add() メソッド:セットに単一の要素を追加します
s = {1, 2, 3}
s.add(4) # 要素 4 を追加
s
{1, 2, 3, 4}
そして update() を使用すると、複数の要素を追加できます。
# update() メソッド:イテラブルから複数の要素を追加します
s = {1, 2, 3}
s.update([2, 3, 4, 5, 6]) # 複数の要素を追加します (重複は無視されます)
s
{1, 2, 3, 4, 5, 6}
set remove と discard
どちらのメソッドもセットから要素を削除しますが、remove() は値が存在しない場合に key error を発生させます。
# remove() メソッド:要素を削除します。見つからない場合は KeyError を発生させます
s = {1, 2, 3}
s.remove(3) # 要素 3 を削除
s
{1, 2}
s.remove(3)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 3
discard() はエラーを発生させません。
# discard() メソッド:要素を削除します。見つからなくてもエラーは発生しません
s = {1, 2, 3}
s.discard(3) # 要素 3 を削除します (安全、欠落してもエラーなし)
s
{1, 2}
s.discard(3)
ログインしてこのクイズに回答し、学習の進捗を追跡できます
remove() メソッドと discard() メソッドの違いは何ですか?remove() は 1 つの要素を削除し、discard() はすべてを削除しますremove() は要素が存在しない場合にエラーを発生させますが、discard() は発生させませんremove() の方が高速ですset union
union() または | は、提供されたセットのすべての要素を含む新しいセットを作成します。
# union(): 複数のセットからすべての要素を結合します (重複なし)
s1 = {1, 2, 3}
s2 = {3, 4, 5}
s1.union(s2) # または 's1 | s2' - {1, 2, 3, 4, 5} を返します
{1, 2, 3, 4, 5}
set intersection
intersection() または & は、すべてのセットに共通する要素のみを含むセットを返します。
# intersection(): すべてのセットに共通する要素を返します
s1 = {1, 2, 3}
s2 = {2, 3, 4}
s3 = {3, 4, 5}
s1.intersection(s2, s3) # または 's1 & s2 & s3' - {3} を返します
{3}
ログインしてこのクイズに回答し、学習の進捗を追跡できます
intersection() は何を返しますか?set difference
difference() または - は、最初のセット(呼び出し元のセット)に固有の要素のみを返します。
# difference(): 最初のセットには存在するが、他のセットには存在しない要素を返します
s1 = {1, 2, 3}
s2 = {2, 3, 4}
s1.difference(s2) # または 's1 - s2' - {1} を返します
{1}
s2.difference(s1) # または 's2 - s1'
{4}
set symmetric_difference
symmetric_difference() または ^ は、両者に共通しないすべての要素を返します。
# symmetric_difference(): いずれかのセットには存在するが、両方には存在しない要素を返します
s1 = {1, 2, 3}
s2 = {2, 3, 4}
s1.symmetric_difference(s2) # または 's1 ^ s2' - {1, 4} を返します
{1, 4}
ログインしてこのクイズに回答し、学習の進捗を追跡できます
symmetric_difference() は何を返しますか?