集合(set)是一个无序的不重复元素序列。
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
创建格式:
>>> k=set('11a3dw') >>> k {'a', '1', 'w', '3', 'd'} >>> s={1,2,3,4,5} >>> type(s) <class 'set'>
集合的运算
S|T | 返回一个新集合,包括在集合S和T中的所有元素 |
S-T | 返回一个新集合,包括在集合S但不在T中的元素 |
S&T | 返回一个新集合,包括同时在集合S和T中的元素 |
S^T | 返回一个新集合,包括集合S和T中的非相同元素 |
S<=T或S<T | 返回True/False,判断S和T的子集关系 |
S>=T或S>T | 返回True/False ,判断S和T的包含关系 |
S|= T | 更新集合S ,包括在集合S和T中的所有元素 |
S-= T | 更新集合S ,包括在集合S但不在T中的元素 |
S&=T | 更新集合S ,包括同时在集合S和T中的元素 |
S^=T | 更新集合S ,包括集合S和T中的非相同元素 |
>>> S={1,2,3,4,5}
>>> T={1,5,3,7,8}
>>> S|T
{1, 2, 3, 4, 5, 7, 8}
#S-T
>>> S-T
{2, 4}
#S&T
>>> S&T
{2, 4}
#S^T
>>> S^T
{2, 4, 7, 8}
# S<=T
>>> S<=T
False
#S<T
>>> S<T
False
#S>=T
>>> S>=T
False
#S>T
>>> S>T
False
#S|T
>>> S|=T
>>> S
{1, 2, 3, 4, 5, 7, 8}
#S-=T
>>> S-=T
>>> S
{2, 4}
#S&=T
>>> S&=T
>>> S
{1,3,5}
#S^=T
>>> S^=T
>>> S
{2, 4, 7, 8}
常用函数
S.add(x) | 如果x不在集合S中,将x增加到S |
S.discard(x) | 移除S中元素x,如果不在集合S中,不报错 |
S.remove(x) | 移除S中元素x,如果不在集合S中,产生KeyError异常 |
S.clear() | 移除S中所有元素 |
S.pop0 | 随机返回S的一个元素,更新S,若S为空产生KeyError异常 |
S.copy() | 返回集合S的一个副本 |
len(S) | 返回集合S的元素个数 |
x in S | 判断S中元素x , x在集合S中,返回True ,否则返回False |
X not in S | 判断S中元素x , x不在集合S中,返回True ,否则返回False |
set(x) | 将其他类型变量x转变为集合类型 |
>>> S={1,2,3}
>>> S.add(4) #add()
>>> S
{1, 2, 3, 4}
>>> S.discard(1) #discard()
>>> S
{2, 3, 4}
>>> S.remove(1) #remove()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 1
>>> S.clear() #clear()
>>> S
set()>>> S={1,2,3,4}
>>> S.pop() #pop()
1
>>> S
{2, 3, 4}
>>> k=S.copy() #copy()
>>> k
{2, 3, 4}
>>> len(S) #len()
3
>>> 2 in S # x in s
True
>>> 2 not in S # x not in s
False
>>> l=['ad',1,2]
>>> type(l)
<class 'list'>
>>> set(l) #set()
{'ad', 2, 1}