セット
数学には集合 (または集合論) というものがあります。おそらく数学のコースで勉強したこともあるのではないでしょうか。ベン図についてもよく知っている かもしれません。
実際には、セットは、要素またはメンバーと呼ばれる、明確に定義された個々のオブジェクトのセットとして単純に考えることができます。
オブジェクトをセットにグループ化すると、プログラミングに役立ちます。Python には組み込み型 set が用意されています。
セット (タイプ set ) は、それらに対して実行できる独自の操作が他のタイプのオブジェクトとは異なります。
Python の組み込み型 set には次の特徴があります。
セットの - 要素には順序がありません (つまり、2 つのセットに同じ要素が含まれている場合は同等です)。セットの要素は順番に保存されるのではなく、要素がセットに属しているかどうかを (すべての要素を列挙することなく) すばやく判断できる特定のアルゴリズムに従って保存されます。
- set 要素は一意です。重複した要素は許可されません。
- セットは変更可能です (たとえば、セットに要素を追加できます) が、セット内の要素自体は不変でなければなりません (数値、文字列、タプル)。リストや別のセットをセットの要素にすることはできません。
セットを作成
片道
セット内の要素を中括弧で囲むだけで列挙します。
x = {"学校", "教師", "クラス", 生徒}
双方向
組み込み関数 set() を使用します。
x = set() # 個の空のセット
list_name = [「アンドリー」、「ボブ」、「キャロライン」]
y = set(リスト名) # 複数作成できます
# 任意の反復可能なオブジェクトから
z = set(["アンドリー", "ボブ", "キャロライン"]) # {'ボブ'、'キャロライン'、'アンドリー'}
k = set(("アンドリー", "ボブ", "キャロライン")) # {'ボブ'、'キャロライン'、'アンドリー'}
s = "文字列 s"
m = セット # {'i'、't'、'g'、'r'、'n'、& #39;s、' '} -
# 注意してください!
# 要素の順序は任意です。
# 個の要素は繰り返されません
n = {42, 'foo', 3.14159, なし, (1, 2, 3)} # 個の要素
# はさまざまなタイプにすることができます
プレ>
出力を設定
セットの要素は、追加された順序ではなく、任意の順序で表示されます。
z = set(["アンドリー", "ボブ", "キャロライン"])
プリント(z) # {'ボブ'、'キャロライン'、'アンドリー'}
print(*z) # ボブ・アンドリー・キャロライン
|
セットを操作するためのメソッド
セット内の要素の数
len() メソッドは、セット内の要素の数を返します。
k = {42, 'foo', 3.14159, なし, (1, 2, 3)}
print(len(k)) #5
プレ>
要素がセット(メンバーシップin )内にあるかどうかを判断する
k = {42, 'foo', 3.14159, なし, (1, 2, 3)}
print(42 in k) # 真
print(2 in k) # 偽
セットに含まれる要素は不変型である必要がありますが、セット自体は変更できます。
設定する要素を追加する
x.add()
セット x に を追加します。これは唯一の不変オブジェクトでなければなりません。
セットからの要素の削除
1) x.remove()
<elem> が x セットから削除されます。 <elem> が x にない場合、Python は例外 (エラー) をスローします。
2) x.discard()
同じ削除ですが、セット内に要素がない場合でも例外は発生しません。
3) x.pop()
セットからランダムな要素を削除して返します。セットが最初から空の場合、例外(エラー)が発生します。
4) x.clear()
セットからすべての要素を削除します (セットをクリアします)。
|
|
並べ替えを設定しますか?
ご存知のとおり、セット内の要素の順序は考慮されません。それでは、Python 3 のソートセットについて話すことに意味があるのでしょうか?! (タイトルに疑問符が付いているのはそのためです)
セット内の要素をすばやく見つけるには、要素を順序付けされた形式でメモリに保存することが望ましいです。
いくつかの例を見てみましょう。同じセット内の異なるデータ型の要素はどうなりますか? そのような要素は並べ替えるべきではありません。 print() コマンドを使用して要素を印刷すると、次のように出力されます。
a = {0, 1, 12, 'b', 'ab', 3, 2, 'a'}
print(a) # {0, 1, 2, 3, 'a', 12, 'b', 'ab'}
プレ>
この場合、ソートされていない値が表示されます。起動を繰り返すと、出力順序が異なる場合があります。ただしこれは異なる種類の要素が混在している場合の 話です。
1 つのタイプのデータ (たとえば、数値のみ) を表示してみます。
a = {0、1、12、3、2}
print(a) # {0, 1, 2, 3, 12}
プレ>
すべての要素が順番に表示されます。これをリストに変換してみましょう。
a = {0、1、12、3、2}
b = リスト(a)
print(b) # [0, 1, 2, 3, 12]
プレ>
同様に、昇順にソートされた要素がリストに書き込まれます。
要素が同じ型である場合、要素は順序付けられた形式でメモリに格納されることがわかりました。ただし、Python アルゴリズムは変更される可能性があるため、当てにしないほうがよいでしょう。
セットからソートされたリストを取得する必要がある場合は、sort を使用することをお勧めします。 code>sorted) 関数を確認してください )。要素は正確にソートされます。あなたのコードは他の人にも理解できるようになります。
|