Python中的集合SET

Python中的set和其他语言类似,是一个无序不重复元素集,基本功能包括关系测试和消除重复元素。集合对象支持union(联合),intersection(交),difference(差)和sysmmetric difference(对称差集)等数学运算。

set支持x in set, len(set)和for x in set等操作。作为一个无序的集合,set不记录元素位置或者插入点,因此不支持indexing, slicing等类序列(sequence-like)的操作。

集合最重要的功能之一就是去重,即消除重复元素。列表中的元素是可以重复的,如果希望去除一个列表中的重复元素,只需要把这个列表转换成集合:

>>> a = [1,4,9,16,25,36]
>>> a.insert(4,4)
>>> a
[1, 4, 9, 16, 4, 25, 36]
>>> b = set(a)
>>> b
set([1, 36, 9, 16, 25, 4])

求两个集合的交集、并集和差集:

>>> c = set([16,25,49,64,81,100])
>>> b
set([1, 36, 9, 16, 25, 4])
>>> c
set([64, 100, 49, 16, 81, 25])
>>> b.intersection(c)            # 交集
set([16, 25])
>>> b & c                        # 交集
set([16, 25])
>>> b.union(c)                   # 并集
set([64, 1, 36, 100, 81, 9, 16, 49, 25, 4])
>>> b | c                        # 并集
set([64, 1, 36, 100, 81, 9, 16, 49, 25, 4])
>>> b.difference(c)              # 差集(元素在b中不在c中)
set([1, 36, 4, 9])
>>> b - c                        # 差集(元素在b中不在c中)
set([1, 36, 4, 9])
>>> c.difference(b)              # 差集(元素在c中不在b中)
set([64, 49, 100, 81])
>>> c - b                        # 差集(元素在c中不在b中)
set([64, 49, 100, 81])
>>> b.symmetric_difference(c)    # 对称差集(元素不同时出现在两个集合中)
set([64, 49, 100, 1, 81, 4, 9, 36])
>>> b ^ c                        # 对称差集(元素不同时出现在两个集合中)
set([64, 49, 100, 1, 81, 4, 9, 36])
>>> b.difference_update(c)       # 用只在b中不在c中的元素更新b
>>> b
set([1, 36, 9, 4])
>>> c
set([64, 100, 49, 16, 81, 25])

向集合中添加元素:

>>> b
set([1, 36, 9, 4])
>>> b.add(16)            # 向b中添加元素16
>>> b.add(25)            # 向b中添加元素25
>>> b
set([1, 36, 9, 16, 25, 4])
>>> b.update(c)          # 将c中所有元素(不包括与b中元素重复的)添加到b中
>>> b
set([64, 1, 36, 100, 81, 9, 16, 49, 25, 4])

包含关系:

True
>>> 121 not in c
True
>>> c.issubset(b)        # c是b的子集
True
>>> b.issuperset(c)      # b是c的超集
True
>>> b > c
True

从集合中删除元素:

>>> b
set([64, 1, 36, 100, 81, 9, 16, 49, 25, 4])
>>> b.remove(121)            # 用remove删除不属于集合的元素会报错
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 121
>>> b.discard(121)           # 用discard删除不属于集合的元素不会有任何事情发生
>>> b
set([64, 1, 36, 100, 81, 9, 16, 49, 25, 4])
>>> b.discard(49)
>>> for m in (64, 81, 100): b.discard(m)
... 
>>> b
set([1, 36, 9, 16, 25, 4])


你可能感兴趣的:(集合,python)