集合 set
定义
- 由一系列键值对组成的可变散列容器。
- 由一系列不重复的不可变类型变量(元组/数/字符串)组成的可变散列容器。
- 相当于只有键没有值的字典(键则是集合的数据)。
基础操作
创建空集合:
集合名 = set()
集合名 = set(可迭代对象)
创建具有默认值集合:
集合名 = {1, 2, 3}
集合名 = set(可迭代对象)
添加元素:
集合名.add(元素)
删除元素:
集合名.discard(元素)
""" 集合set 应用1:去重复 基础操作 创建 添加 遍历 删除 """ # 1.创建 # 语法1:集合名 = {元素1,元素2} set01 = {"a","b"} # 语法2:集合名 = set(可迭代对象) list01 = ["悟空","八戒","悟空","唐僧"] set02 = set(list01) print(set02) # 2.添加 set01.add("c") # 3.遍历 for item in set01: print(item) # 4.删除 # set01.remove("悟空") #如果key不存在则报错 # set01.remove("a") set01.discard("悟空") #如果key不存在也不报错 print(set01)
运算
交集&:返回共同元素。
s1 = {1, 2, 3}
s2 = {2, 3, 4}
s3 = s1 & s2 # {2, 3}
并集:返回不重复元素
s1 = {1, 2, 3}
s2 = {2, 3, 4}
s3 = s1 | s2 # {1, 2, 3, 4}
补集-:返回只属于其中之一的元素
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)
子集<:判断一个集合的所有元素是否完全在另一个集合中
超集>:判断一个集合是否具有另一个集合的所有元素
s1 = {1, 2, 3}
s2 = {2, 3}
s2 < s1 # True
s1 > s2 # True
相同或不同== !=:判断集合中的所有元素是否和另一个集合相同。
s1 = {1, 2, 3}
s2 = {3, 2, 1}
s1 == s2 # True
s1 != s2 # False
子集或相同,超集或相同 <= >=
""" 集合set 应用2: 数学运算 交并补 """ set01 = {1,2,3} set02 = {2,3,4} # 交集(相当于并且) print(set01 & set02) #{2, 3} # 并集(相当于或者) print(set01 | set02) #{1, 2, 3, 4} # 补集 # 补集-:返回只属于其中之一的元素 # 补集^:返回不同的的元素 print(set01 - set02) #{1} print(set02 - set01) #{4} print(set01 ^ set02) #{1, 4}
集合推导式
定义:
使用简易方法,将可迭代对象转换为集合。
语法:
{表达式 for 变量 in 可迭代对象}
{表达式 for 变量 in 可迭代对象 if 条件}