09-集合
创建集合
集合(set)是一个无序的不重复元素序列。
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
# 集合中的元素不可重复
basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
print(basket)
# 创建空的集合不能使用{}
item1 = {}
item2 = set()
print(type(item1))
print(type(item2))
执行结果:
{'apple', 'orange', 'banana', 'pear'}
<class 'dict'>
<class 'set'>
集合运算
x = set('abcde')
y = set('bdxyz')
# Difference 差集
print(x - y)
# Union 并集
print(x | y)
# Intersection 交集
print( x & y )
# Symmetric difference (XOR) 补集
print(x ^ y )
执行结果:
{'c', 'e', 'a'}
{'d', 'z', 'e', 'c', 'x', 'b', 'a', 'y'}
{'d', 'b'}
{'z', 'e', 'x', 'c', 'a', 'y'}
添加和移除元素
添加元素
语法格式如下:
s.add( x )
将元素 x 添加到集合 s 中,如果元素已存在,则不进行任何操作。
thisset = set(("Google", "ali", "baidu"))
thisset.add("Facebook")
print(thisset)
thisset.add("Facebook")
print(thisset)
执行结果:
{'Google', 'baidu', 'ali', 'Facebook'}
{'Google', 'baidu', 'ali', 'Facebook'}
还有一个方法,也可以添加元素,且参数可以是列表,元组,字典等,语法格式如下:
s.update( x )
thisset = set(("Google", "ali", "baidu"))
thisset.update({1,3})
print(thisset)
thisset.update([1,4],[5,6])
print(thisset)
执行结果:
{'Google', 'baidu', 3, 'ali', 1}
{'baidu', 1, 3, 4, 5, 6, 'Google', 'ali'}
移除元素
移除指定的元素,元素不存在时报错
语法格式如下:
s.remove( x )
将元素 x 从集合 s 中移除,如果元素不存在,则会发生错误。
thisset = set(("Google", "ali", "baidu"))
thisset.remove("ali")
print(thisset)
# 不存在会发生错误
thisset.remove("Facebook")
执行结果:
{'Google', 'baidu'}
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-25-ed86689b10a6> in <module>()
3 print(thisset)
4
----> 5 thisset.remove("Facebook") # 不存在会发生错误
6
KeyError: 'Facebook'
移除指定的元素,元素不存在时不报错
此外还有一个方法也是移除集合中的元素,且如果元素不存在,不会发生错误。格式如下所示:
s.discard( x )
thisset = set(("Google", "ali", "baidu"))
thisset.remove("ali")
print(thisset)
# 不存在会发生错误
thisset.discard("Facebook")
执行结果:
{'Google', 'baidu'}
随机删除元素
随机删除集合中的一个元素
s.pop()
thisset = set(("Google", "baidu", "ali", "Facebook"))
x = thisset.pop()
print(x)
执行结果:
Google
集合的常用方法
- clear() :移除集合中的所有元素
- copy():拷贝一个集合
- len() : 求集合中元素个数
- difference() :返回多个集合的差集
- intersection():返回集合的交集
- symmetric_difference():返回两个集合中不重复的元素集合。
- union(): 返回两个集合的并集