Set Semantics
A set
is, perhaps the simplest possible container, since it contains objects in no particular order with no particular identification. Objects stand for themselves. With a sequence, objects are identified by position. With a mapping, objects are identified by some key. With a set
, objects stand for themselves.
Since each object stands for itself, elements of a set
cannot be duplicated. A list
or tuple
, for example, can have any number of duplicate objects. For example, the tuple
( 1, 1, 2, 3 )
has four elements, which includes two copies of the integer 1
; if we create a set
from this tuple
, the set
will only have three elements.
A set
has large number of operations for unions, intersections, and differences. A common need is to examine a set
to see if a particular object is a member of that set
, or if one set
is contained within another set
.
A set
is mutable, which means that it cannot be used as a key for a dict
for more information.) In order to use a set
as a dict
key, we can create a frozenset
, which is an immutable copy of the original set
. This allows us to accumulate a set
of values to create a dict
key.
Set Literal Values
frozenset
(iterable
) → setset
( iterable
) → set
>>>
set( ("hello", "world", "of", "words", "of", "world") )
set(['world', 'hello', 'words', 'of'])
Set Operations
>>>
fib=set( (1,1,2,3,5,8,13) )
>>>
prime=set( (2,3,5,7,11,13) )
>>>
fib | prime
set([1, 2, 3, 5, 7, 8, 11, 13])
>>>
fib & prime
set([2, 3, 5, 13])
>>>
fib - prime
set([8, 1])
>>>
prime - fib
set([11, 7])
>>>
fib ^ prime
set([8, 1, 11, 7])
Set Comparison Operators
All of the standard comparisons (<
, <=
, >
, >=
, ==
, !=
, in, not in) work with set
s
>>>
craps= set( [ (1,1), (2,1), (1,2), (6,6) ] )
>>>
(1,2) in craps
True
>>>
(3,4) in craps
False
>>>
three= set( [ (2,1), (1,2) ] )
>>>
three < craps
True
>>>
three <= craps
True
>>>
craps <= craps
True
>>>
craps < craps
False
Set Statements
>>> even= set( range(2,38,2) )
>>> ōdd= set( range(1,37,2) )
>>> zero= set( (0,'00') )
>>> for n in even|odd|zero:
print n
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
00
Set Built-in Functions
A number of built-in functions create or process set
s.
-
Return the number of items of a
set
. -
With a
set
, return its largest item -
With a
set
, return its smallest item.
len
(object
) → integer
max
(set
) → value
min
(set
) → value
Set Methods
A set
object has a number of member methods. In the following definitions, s
is a set
object.
The following transformation functions update a set
.
-
Remove all items from the
set
. -
Copy the
set
to make a newset
. This is a shallow copy. All objects in the newset
are references to the same objects as the originalset
. -
Remove an arbitrary object from the
set
, returning the object. If theset
was already empty, this will raise aKeyError
exception. -
Adds element
new
to theset
. If the object is already in theset
, nothing happens. -
Removes element
old
from theset
. If the objectold
is not in theset
, this will raise aKeyError
exception. -
Removes element
old
from theset
. If the objectold
is not in theset
, nothing happens. -
Merge values from the
new
set
into the originalset
, adding elements as needed. It is equivalent to the following Python statement.s |= new
. -
Update
s
to have the intersection ofs
andnew
. In effect, this discards elements froms
, keeping only elements which are common tonew
ands
. It is equivalent to the following Python statement.s &= new
. -
Update
s
to have the difference betweens
andnew
. In effect, this discards elements froms
which are also innew
. It is equivalent to the following Python statement.s -= new
. -
Update
s
to have the symmetric difference betweens
andnew
. In effect, this both discards elements froms
which are common withnew
and also inserts elements intos
which are unique tonew
. It is equivalent to the following Python statement.s ^= new
.
s.
clear
s.
copy
→ set
s.
pop
→ object
s.
add
(new
)
s.
remove
(old
)
s.
discard
(old
)
s.
update
(new
) → object
s.
intersection_update
(new
) → object
s.
difference_update
(new
) → object
s.
symmetric_difference_update
(new
) → object
The following accessor methods provide information about a set
.
-
If
s
is a subset ofset
, returnTrue
, otherwise returnFalse
. Essentially, this iss <= set
. -
If
s
is a superset of
, returnset
True
, otherwise returnFalse
. Essentially, this iss >= set
. -
If
new
is a properset
, returns | new
. Ifnew
is a sequence or other iterable, make a newset
from the value ofnew
, then return the union,s | new
. This does not updates
.>>>
prime.union( (1, 2, 3, 4, 5) )
set([1, 2, 3, 4, 5, 7, 11, 13])
-
If
new
is a properset
, returns & new
. Ifnew
is a sequence or other iterable, make a newset
from the value ofnew
, then return the intersection,s & new
. This does not updates
. -
If
new
is a properset
, returns - new
. Ifnew
is a sequence or other iterable, make a newset
from the value ofnew
, then return the difference,s - new
. This does not updates
. -
If
new
is a properset
, returns ^ new
. Ifnew
is a sequence or other iterable, make a newset
from the value ofnew
, then return the symmetric difference,s ^ new
. This does not updates
.
>>>help(set)可查一下
s.
issubset
(set
) → boolean
s.
issuperset
(set
) → boolean
s.
union
(new
) → set
s.
intersection
(new
) → set
s.
difference
(new
) → set
s.
symmetric_difference
(new
) → set
Help on class set in module __builtin__: