Sets - Learn Python 3 - Snakify

Lesson 10
セット


1. セットとは何ですか?

Pythonで設定して数学のセットに相当するデータ構造です。さまざまな要素で構成されています。セット内の要素の順序は定義されていません。あなたは集合の要素を追加したり削除したり、集合の要素を反復することができます。集合(集合、交点、差分)に対して標準的な操作を行うことができます。それ以外に、要素がセットに属しているかどうかを調べることができます。

要素が順序付きリストとして格納される配列とは異なり、要素の順序は未定義です(さらに、集合要素は通常、集合の外観順に格納されません;これにより、要素がより速く集合に属するかどうかを確認できますセットのすべての要素を通過するよりも)。

任意の不変データ型は、集合の要素(数字、文字列、タプル)にすることができます。変更可能な(変更可能な)データ型は、セットの要素にすることはできません。特に、listは集合の要素になることはできませんが、他の集合は集合の要素になることはできません。不変性の要件は、コンピュータがメモリ内のセットをどのように表現するかという方法に従います。

Advertising by Google, may be based on your interests

2. セットを定義する方法

括弧内のすべての要素に名前を付けることで、セットを単純なものとして定義できます。唯一の例外は空集合です 。これはset()関数を使って作成できます。 set(..)がリスト、文字列、またはタプルをパラメータとして持つ場合、その要素で構成されるセットが返されます。例えば、

A = {1, 2, 3}
A = set('qwerty')
print(A)

{'e', 'q', 'r', 't', 'w', 'y'}を出力として出力します。

要素の順序は重要ではありません。例えば、プログラム

A = {1, 2, 3}
B = {3, 2, 3, 1}
print(A == B)

ABは等しいセットなのでTrueます。

各要素は1回だけセットに入ることができます。 set('Hello')は、 {'H', 'e', 'l', 'o'}の4つの要素のセットを返します。

Advertising by Google, may be based on your interests

3. 要素による操作

関数lenを使って、集合内の要素の数を得ることができます。

次のループfor使用して、セットのすべての要素を反復することもできます(未定義の順序で)。

primes = {2, 3, 5, 7, 11}
for num in primes:
    print(num)

ina in Aような式はa in A bool型の値を返します。同様に、ではnot in反対の操作not inます。要素をセットにaddには、 addメソッドがあります。

A = {1, 2, 3}
print(1 in A, 4 not in A)
A.add(4)

要素をセットから削除するには、 discardremoveという2つの方法があります。それらの動作は、削除されたアイテムがセットに含まれていない場合にのみ変化します。この場合、メソッドdiscardは何もせず、メソッドremoveは例外KeyError removeスローします。

最後に、 popはセットから1つのランダムな要素を削除し、その値を返します。セットが空の場合、 popは例外KeyError生成します。

関数listを使用して、セットをリストに変換できlist

Advertising by Google, may be based on your interests

4. セットに対する操作

これはPythonでよく知られている操作をセットで実行する方法です:

| B
A.ユニオン(B)
集合Aと集合B和集合である集合を返します。
A | = B
A.update(B)
配列Bすべての要素を集合A追加します。
A&B
A.交絡(B)
集合AB交点である集合を返します。
A&= B
A.intersection_update(B)
セットで葉セットに属しているアイテムのみA B
A - B
A.差(B)
差集合を返しA及びB (要素が中に含まA 、しかしには含まれていないB )。
A - = B
A.difference_update(B)
集合AからBすべての要素を削除します。
A ^ B
対称差異(B)
集合ABAまたはBいずれかに属し、両方の集合に同時に属していない要素)の対称差を返します。
A ^ = B
Symmetric_difference_update(B)
セットAとセットB対称差をA書き込みます。
A <= B
A.issubset(B)
ABサブセットでtrue場合、 true返します。
A> = B
A.セットトップ(B)
BAサブセットでtrue場合はtrue返します。
A <B
A <= B and A != B等しい
A> B
A >= B and A != B等しい
Advertising by Google, may be based on your interests