# 1 PEP 218: Built-In Set Objects

Python 2.3 introduced the `sets` module. C implementations of set data types have now been added to the Python core as two new built-in types, `set(iterable)` and `frozenset(iterable)`. They provide high speed operations for membership testing, for eliminating duplicates from sequences, and for mathematical operations like unions, intersections, differences, and symmetric differences.

    >>> a = set('abracadabra')              # form a set from a string
    >>> 'z' in a                            # fast membership testing
    False
    >>> a                                   # unique letters in a
    set(['a', 'r', 'b', 'c', 'd'])
    >>> ''.join(a)                          # convert back into a string
    'arbcd'

    >>> b = set('alacazam')                 # form a second set
    >>> a - b                               # letters in a but not in b
    set(['r', 'd', 'b'])
    >>> a | b                               # letters in either a or b
    set(['a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'])
    >>> a & b                               # letters in both a and b
    set(['a', 'c'])
    >>> a ^ b                               # letters in a or b but not both
    set(['r', 'd', 'b', 'm', 'z', 'l'])

    >>> a.add('z')                          # add a new element
    >>> a.update('wxy')                     # add multiple new elements
    >>> a
    set(['a', 'c', 'b', 'd', 'r', 'w', 'y', 'x', 'z'])
    >>> a.remove('x')                       # take one element out
    >>> a
    set(['a', 'c', 'b', 'd', 'r', 'w', 'y', 'z'])

The `frozenset` type is an immutable version of `set`. Since it is immutable and hashable, it may be used as a dictionary key or as a member of another set.

The `sets` module remains in the standard library, and may be useful if you wish to subclass the `Set` or `ImmutableSet` classes. There are currently no plans to deprecate the module.

See Also:

PEP 218, Adding a Built-In Set Object Type
  Originally proposed by Greg Wilson and ultimately implemented by Raymond Hettinger.