您的位置:首页 > 编程语言 > Python开发

Python中的集合SET

2014-10-11 00:50 302 查看
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])
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: