集合
集合是一种不允许元素出现重复的容器。
案例:判断一个列表中是否含有重复元素,便可借助集合这种数据类型。
def duplicated(lst):
return len(lst)!=len(set(lst)) # 不相等就意味着含重复元素
创建集合
与字典(dict)类似,集合(set)也是由一对花括号创建 { } 。
但是,容器内的元素不是键值对。
a = {1, 2, 3}
同字典类似,集合内的元素必须是可哈希类型(hashable)。
这就意味着 list、dict 等不可哈希的对象不能作为集合的元素。
In [1]: {[1,2]}
TypeError: unhashable type: 'list'
另一种创建集合的方法,是通过 Python 的内置的 set 函数,参数类型为可迭代对象 Iterable。
In [1]: set([1,3,5,7])
Out[1]: {1, 3, 5, 7}
常用方法
集合自带的方法与数学中的集合操作比较类似,提供查找集合间的并、交、差集、子集判断。
求并集:
a = {1,3,5,7}
b, c = {3,4,5,6}, {6,7,8,9}
d = a.union(b,c) # {1, 3, 4, 5, 6, 7, 8, 9}
求差集:
a = {1,3,5,7}
b, c = {3,4,5,6}, {6,7,8,9}
d = a.difference(b,c) # {1}
求交集:
a = {1,3,5,7}
b, c = {3,4,5,6}, {6,7,8,9}
d = a.intersection(b,c) # {}
a 是 b 的子集吗?
In [15]: a = {1,3,5,7}
In [16]: b = {3,4,5,6}
In [17]: a.issubset(b)
Out[17]: False
In [18]: a.issubset(a)
Out[18]: True
In [19]: a.issubset({1,3,5,7,8})
Out[19]: True