** 集合 set**
定义
1. 由一系列不重复的不可变类型变量(元组/数/字符串)组成的可变散列容器。
2. 相当于只有键没有值的字典(键则是集合的数据)。
基础操作
1. 创建空集合:
集合名 = set()
集合名 = set(可迭代对象)
2. 创建具有默认值集合:
集合名 = {1, 2, 3}
集合名 = set(可迭代对象)
# 1. 创建
set01 = {"悟空", "唐僧"}
# 创建空集合
set02 = set() #并不能直接等于大括号,那样的话是"字典"
list01 = ["悟空", "唐僧", "悟空", "八戒"]
set02 = set(list01) #去重了!
3. 添加元素:
集合名.add(元素)
4. 删除元素:
集合名.discard(元素)
set01.add("小白龙") #自己特定的函数
if "悟空2" in set01:
set01.remove("悟空2")#这个跟列表的是一样的,但是一般不用,容易出错
set01.discard("悟空") #这个是常用的,如果删除对象不存在,不会报错!
集合的运算
1. 交集&:返回共同元素。
s1 = {1, 2, 3}
s2 = {2, 3, 4}
s3 = s1 & s2 # {2, 3}
2. **并集 |** :返回不重复元素
s1 = {1, 2, 3}
s2 = {2, 3, 4}
s3 = s1 | s2 # {1, 2, 3, 4}
3. **补集 -** :返回只属于其中之一的元素
s1 = {1, 2, 3}
s2 = {2, 3, 4}
s1 - s2 # {1} 属于s1但不属于s2
补集 ^ :返回不同的的元素
s1 = {1, 2, 3}
s2 = {2, 3, 4}
s3 = s1 ^ s2 # {1, 4} 等同于(s1-s2 | s2-s1)
4. **子集<**:判断一个集合的所有元素是否完全在另一个集合中
5. **超集>**:判断一个集合是否具有另一个集合的所有元素
s1 = {1, 2, 3}
s2 = {2, 3}
s2 < s1 # True
s1 > s2 # True
6. **相同或不同== !=**:判断集合中的所有元素是否和另一个集合相同。
s1 = {1, 2, 3}
s2 = {3, 2, 1}
s1 == s2 # True
s1 != s2 # False
子集或相同,超集或相同 <= >=
各种容器总结一下:
字符串:存储字符编码,不可变,序列
常用操作:…
列表:存储变量,可变,序列
常用操作:增删改查(索引,切片,for)
元组:存储变量,不可变,序列
常用操作:查(索引,切片,for)
字典:存储键值对,可变,散列
常用操作:增删改查(key,for)
集合:存储键,可变,散列
常用操作:增删查(for)
固定集合:不可变的集合