集合set
关于集合:
- 集合是可变、无序的一种容器
- 集合内的数据对象都是唯一的({1,1}是不可能的)
- 集合是可迭代对象
- 集合相当于只有键没有值的字典(字典的键就是集合的数据)
创建集合
s = set() # 创建空集合只有这一种方法,不能使用 s = {},这是创建空字典
s = {2,5,7,8}
s = set("ABC") # s = {'A','B','C'}
s = set("ABCCBA") # s = {'A','B','C'}
s = set({1:'1',2:'2',3:'3'}) # s = {1,2,3}
s = set({1:'1',2:'2',3:'3'}.values()) # {'2', '1', '3'}
s = set({1:'1',2:'2',3:'3'}.items()) # {(1, '1'), (3, '3'), (2, '2')}
s = set(("ABC",'123',True)) # {True, 'ABC', '123'}
s = {True,None,"ABC",(1,2,3)} # {True, (1, 2, 3), None, 'ABC'}
集合的运算:
交集 &
并集 |
补集(差集) -
对称补集 ^
子集 <
超集(父集) >
交集 &
用于生成两个集合共同有的元素
s1 = {1, 2, 3}
s2 = {2, 3, 4}
s1 & s2 # 交集的结果: {2, 3}
并集 |
用于生成两个集合的全部元素
s1 = {1, 2, 3}
s2 = {2, 3, 4}
s1 | s2 # {1, 2, 3, 4}
补集 -
用于生成第一个集合有第二个集合没有的元素
s1 = {1, 2, 3}
s2 = {2, 3, 4}
s1 - s2 # {1}
s2 - s1 # {4} # 生成属于s2但不属于s1的元素
对称补集 ^
用于生成两个集合含有共同元素之外的元素
s1 = {1, 2, 3}
s2 = {2, 3, 4}
s1 ^ s2 # {1, 4} # 生成两个集合的并集与交集的补集
# ==((s1|s2)-(s1&s2))
子集 <
如果前者集合的元素在后者集合里都有,则返回True,否则返回False
s1 = {1, 2, 3}
s2 = {2, 3, 4}
s3 = {1, 2, 3, 4}
s1 < s2 # False
s1 < s3 # True
超集(父集) >
类似于子集,前后颠倒位置即可
集合的比较运算
等于 ==
不等于 !=
>>> s1 = {1, 2, 3}
>>> s2 = {1, 3, 2}
>>> s1==s2
True
>>> s1!=s2
False
in / not in 运算
只能是判断元素,不能判断集合
例如:
>>> s = {1,2,3,4}
>>> 1 in s
True
>>> {1} in s
False
集合的推导式:
略
固定集合frozenset
固定集合和集合的区别就是固定集合是不可变的,而集合是可变的,其他的基本都一样
由于固定集合是不可变的,所以没有集合里边的修改操作,一笔带过
fz = frozenset()
fz = frozenset('ABCAB') # frozenset({'C', 'B', 'A'})
fz = frozenset([1, 2, 3, 4, 5])
本节完,拓展见:用于集合的方法