无序的(不可通过下标获取)、不可重复的、不可随机访问的(也没有key来完成获取)的元素集合
创建集合:
1、可变集合 set
s={1,2,3,'a',True}或者s=set(iterale)
s2 = set ('abc')
s2 = set (['a','b','c'])
s2 = set (('a','b','c'))
结果都是{'a','b','c'}或者bac或者任意顺序的abc
s2=set({'a':1,'b':2}) 结果是{'a','b'}
s={}和s=set()里面都可写推导式:
s=set(x for xin range(0,10))
s={x for xin range(0,10)}
2、不可变集合 frozenset
fs=frozenset()里面也可以是字符串列表元组和字典,结果是frozenset({})
fs=frozenset()里面也可以放推导式
创建空集合:
s=set()
fs=frozenset()
不能用s={},如果s={}就会变成空字典
PS:集合中的元素必须是可哈希的(不变类型,也就是说不能有列表和字典作为集合中的元素!!)
集合常用操作:
1.单一集合操作
1.1 可变集合
1.1.1 增:.add(element)
1.1.2 删:
.remove(element) 如果element不存在就报错
.discard(element)如果element不存在啥也不做
.pop()随机删一个元素
.clear清空集合
1.1.3查:
遍历,生成迭代器
its = iter(s)
print(next(its))
或者
for v in its
print(v)
1.2 不可变集合
只能查。跟set一样
2.集合间的操作
2.1 交集
2.1.1 .intersection(iterable)
result = s1.intersection(s2)
result的类型跟.左侧的集合一样,result是返回的集合
2.1.2 &
result = s1 & s2
result的类型跟左侧的集合一样,result是返回的集合
2.1.3 .intersection_update
s1.intersection_update(s2)
result是none,s1变成s1和s2的交集
s2可以是字符串、列表、集合、字典,其中字典进行交集的是key
s1只能是可变集合
2.2并集
2.2.1 .union
result = s1.union(s2)
result的类型跟.左侧的集合一样,result是返回的集合
2.2.2 |
result = s1 | s2
result的类型跟.左侧的集合一样,result是返回的集合
2.2.3 .update
result = s1.update(s2)
result是none,s1是s1和s2的并集
2.3 差集
2.3.1 .difference
result = s1.difference(s2)
result的类型跟.左侧的集合一样,result是返回的集合
2.3.2 -
result = s1 - s2
result的类型跟.左侧的集合一样,result是返回的集合
2.3.3 .difference_update
result = s1.difference_update(s2)
result是none,s1是s1和s2的差集
2.4 判定
2.4.1 .isdisjoint() 两集合不相交
s1.isdisjoint(s2)
2.4.2 .issuperset
s1.issuperset(s2) s1包含s2
2.4.3 .issubset()
s1.issubset()s2包含s1
以上返回的都是布尔值