Pythonでsetとfrozensetの方法と違いを詳しく説明します。


set(可変セット)とfrozenseet(可変セットではない)の違い:
setが無秩序に並べ替えられ、重複しないで、可変で、add()、remove()などの方法があります。可変である以上、ハッシュ値は存在しない。基本的な機能は関係テストと重複要素の除去、集合オブジェクトはunion、intersection、difference(差セット)、sysmetric differenceなどの数学演算をサポートする。
setsはx in set、len、for x in setをサポートします。無秩序な集合として要素位置または挿入点を記録しない。したがって、setsはindexing、または他のシーケンスの動作をサポートしない。
frozensetは凍結されたセットであり、可変ではなく、ハッシュ値が存在し、利点は辞書のkeyとしてもよく、他のセットの要素としてもよい。欠点は一旦作成すると変更できなくなり、addがなく、remove方法がないことです。
一、集合の作成
set()とfrozenseet()の工場関数はそれぞれ可変および可変でない集合を生成するために使用される。パラメータが提供されていない場合、デフォルトでは空セットが生成されます。パラメータが提供される場合、このパラメータは反復可能である必要があります。すなわち、シーケンス、または、サブジェネレータ、またはサポートされています。
反復されたオブジェクト、例えばリストまたは辞書。

>>> s=set('cheeseshop')         
>>> s
{'h', 'c', 'o', 's', 'e', 'p'}
>>> type(s)
<type 'set'>
>>> s={'chessseshop','bookshop'}    ,   list [] dict {},   dict      ,set            
>>> s
{'bookshop', 'chessseshop'}
>>> type(s)
<type 'set'>
可変集合の作成:

>>> t=frozenset('bookshop')
>>> t
frozenset({'h', 'o', 's', 'b', 'p', 'k'}) 
二、可変集合を更新する
セットのメンバーをさまざまなセット内に構築する方法と操作子で追加し削除します。

>>> s.add('z') #  
>>> s
set(['c', 'e', 'h', 'o', 'p', 's', 'z'])
>>> s.update('pypi') #  
>>> s
set(['c', 'e', 'i', 'h', 'o', 'p', 's', 'y', 'z'])
>>> s.remove('z') #  
>>> s
set(['c', 'e', 'i', 'h', 'o', 'p', 's', 'y'])
>>> s -= set('pypi')#  
>>> s
set(['c', 'e', 'h', 'o', 's'])
>>> del s #    
可変セットだけが修正されます。可変セットを変更しようとしたら異常が発生します。

>>> t.add('z')
Traceback (most recent call last):
File "<stdin>", line , in ?
AttributeError: 'frozenset' object has no attribute 'add' 
三、メンバー関係(in、not in)

>>> 'k' in s
False
>>> 'k' in t
True
>>> 'c' not in t
True 
四、集合等価/不等価

>>> s == t
False
>>> s != t
True
>>> u = frozenset(s)
>>> s == u
True
>>> set('posh') == set('shop')
True 
五、サブセット/オーバーセット

>>> set('shop') < set('cheeseshop')
True
>>> set('bookshop') >= set('shop')
True 
六、巡回訪問セットの中の値(可変セットと非可変都サポート)

>>> s=set('cheeseshop')
>>> s
{'h', 'c', 'o', 's', 'e', 'p'}
>>> for i in s:
print(i) 
h
c
o
e
p
>>> t=frozenset('bookshop')
>>> t
frozenset({'h', 'o', 's', 'b', 'p', 'k'})
>>> for i in t:
print(i) 
h
o
b
p
k 
七、集合タイプオペレータ(すべての集合タイプ)
1.連携(124)

              ,                      , ,             。            ,union().
 >>> s | t
 set(['c', 'b', 'e', 'h', 'k', 'o', 'p', 's']) 
2.交差(&)

               AND(   )  。             ,      
               , ,         。            ,intersection()
 >>> s & t
 set(['h', 's', 'o', 'p']
3.補間/相対補完(C)

     (s   t)               C,       ,      s,   
     t。           ,difference().
 >>> s - t
 set(['c', 'e']) 
4.対称差分(^^)

             ,          XOR(  "   ").
     (s   t)              C,       ,        s      t
    ,          。            ,symmetric_difference().
 >>> s ^ t
 set(['k', 'b', 'e', 'c']) 
5.混合集合タイプの操作

       ,    s      ,     t         .           
               ,               ,       :
 >>> t | s
 frozenset(['c', 'b', 'e', 'h', 'k', 'o', 'p', 's'])
 >>> t ^ s
 frozenset(['c', 'b', 'e', 'k'])
 >>> t - s frozenset(['k', 'b']) 
左右の2つの操作数のタイプが同じで、いずれも可変セットまたは可変セットでなければ、結果のタイプは同じであるが、左右の2つの操作数のタイプが異なる場合(左操作数がset、右操作数がfroozenset、または逆の場合)、生成された結果のタイプは左操作数のタイプと同じである。
八、可変集合タイプの方法

 s.update(t)   t        s,  ,s      s   t    
 s.intersection_update(t) s           s   t    。
 s.difference_update(t) s         s       t     
 s.symmetric_difference_update(t) s              s   t  ,     s  t      
 s.add(obj)     s       obj
 s.remove(obj)     s       obj;   obj      s     (obj not
 in s),    KeyError   
 s.discard(obj)    obj     s     ,    s       obj;
 s.pop()      s         ,    
 s.clear()      s        
九、セットタイプの操作子、関数と方法
関数/メソッド名等価演算子の説明
すべてのセットのタイプ:

 len(s)     :    s       
 set([obj])         ; obj         ,  obj         ,         
 frozenset([obj])          ;       set()    ,           
 obj in s     :obj   s        ?
 obj not in s      :obj    s        ?
 s == t     :    s   t          ?
 s != t      :  ==  
 s < t (     )    ; s != t    s             t    
 s.issubset(t) s <= t     (           ): s          t    
 s > t (     )    : s != t    t          s    
 s.issuperset(t) s >= t     (           ): t           s    
 s.union(t) s | t     : s   t     
 s.intersec- tion(t) s & t     : s   t     
 s.difference(t) s - t     : s     ,    t     
 s.symmetric_difference(t)s ^ t       :s   t     ,    s   t      
 s.copy()     :   s  (   )   
可変セットのみに使用します。

 s.update(t) s |= t (Union)     :   t        s
 s.intersection_update(t) s &= t       : s      s   t       
 s.difference_update(t) s -= t      : s        s      t    
 s.symmetric_
 difference_
 update(t) s ^= t         : s        s      t    
 s.add(obj)    :   obj     s
 s.remove(obj)     :   obj   s    ;   s     
 obj,    KeyError
 s.discard(obj)     : remove()           -    s     obj,  s     
 s.pop() Pop   :       s         
 s.clear()     :    s       
以上は小编が绍介したPython中setとfrozenset方法と区别の详细な解です。皆さんに助けてほしいです。もし何か疑问があれば、メッセージをください。小编はすぐに返事します。ここでも私たちのサイトを応援してくれてありがとうございます。