集合
集合 set
集合是可变容器
集合内的数据对象是唯一的(只有一个)
集合是无序的存储结构,集合中的数据没有先后关系
集合内的元素必须是不可变对象
集合是可迭代对象
集合是相当于只有键没有值的字典(键则是集合的数据)
创建空集合
s = set()
创建非空集合
s = {1, 2, 3}
s = {3.14, True, (1970, 1, 1), 'hello'}
集合的构造函数 set
set()
set(iterable)
示例:
s = {1, 3, 5, 7}
s = set('ABC')
s = set('ABCCBA')
s = set({1: '1', 2: '2', 5: '5'})
s = set([1, 0, 3.14, 'hello'])
s = set(('abc', '123', True))
集合的运算:
交集,并集,补集,子集,超集
s1 = {1, 2, 3}
s2 = {2, 3, 4}
& 生成两个集合的交集
"同时存在于两个集合中的元素"
s1 & s2 -> {2, 3}
| 生成两个集合的并集
“两个集合的所有元素”
s1 | s2 -> {1, 2, 3, 4}
^ 生成两个集合的对称补集
"去掉同时存在于两个集合中的元素,返回剩下的所有元素"
s1 ^ s2 -> {1, 4}
- 生成两个集合的补集
“去掉同时存在与两个集合中的元素,返回第一个集合中剩下的元素”
s1 - s2 -> {1}
s2 - s1 -> {4}
> 判断一个集合是否是另一个集合的超集
< 判断一个集合是否是另一个集合的子集
s1 = {1, 2, 3}
s2 = {2, 3}
s1 > s2 -> True
s1 < s2 -> False
# sets.py 集合练习
manager = {'John', 'Tom', 'Mike'}
tech = {'John', 'Mike', 'Ana', 'Oda'}
print(manager & tech) # both manager and tech
print(manager - tech) # manager but not tech
print(tech - manager) # tech but not manager
print('Ana' in manager) # is Ana a manager?
print(manager ^ tech) # who only plays one role?
print(len(manager | tech)) # how many employees