一、创建集合
创建非空集合:集合中set括号中需要的参数的数据类型有:序列(包括字符串、列表、元组),字典可以转为集合,注意数值类型不能作为集合的参数,如int类型。
代码示例:
set1 = set("3213") --{'2', '3', '1'}
二、添加元素
add()方法是将要添加的元素作为一个整体添加到集合中
update()方法是把要传入的元素拆分成单个字符,存于集合中,并去掉重复的
代码示例:
#创建一个集合
s=set("123456") --{'4', '5', '3', '6', '2', '1'}
#添加元素
s.add("123") --{'4', '5', '3', '6', '2', '123', '1'}
s.update("5678") --{'4', '5', '8', '3', '6', '2', '123', '1', '7'}
三、删除元素
集合的删除操作使用的方法跟列表是一样的,使用的也是remove方法,只能单个删除
代码示例:
#创建一个集合
s=set("123456") --{'4', '5', '3', '6', '2', '1'}
#删除元素
s.remove("1") --{'4', '5', '3', '6', '2'}
四、遍历集合
代码示例:
#创建一个集合
s=set("123456") --{'4', '5', '3', '6', '2', '1'}
#遍历集合
for i in s:
print(i,end=" ") --453621
#带索引序号的遍历:
for i,ii in enumerate(s) : --枚举的方法
print(i,ii," ",end="") --0 4 1 5 2 3 3 6 4 2 5 1
五、集合与字符串、列表、元组互转,集合转字典
代码示例:
#字符串与集合互转
a = "badc"
b = set(a) --{'a', 'c', 'b', 'd'} --字符串转集合,顺序打乱并去重
s1 = "".join(b) --'acbd' --集合转字符串,顺序不变
#列表与集合互转
list1 = [1, 2, 3, 2, 'a', 'b']
list2 = set(list1) --{1, 2, 3, 'a', 'b'} --列表转集合,排序并去重
list2 = list(list1) --[1, 2, 3, 2, 'a', 'b'] --集合转列表,顺序不变
#元组与集合互转
tup = (1,3,2,1,"b","a")
tup1 = set(tup) --{1, 2, 3, 'b', 'a'} --元组转集合,排序并去重
tup2 = tuple(tup1) --(1, 2, 3, 'b', 'a') --集合转元组,顺序不变
#字典转集合
dict1 = {3:4,1:2}
dict = set(dict1) --{1, 3} --排序并去重,只取字典的key组成集合
六、查找元素并删除
函数原型:a.discard(b)
参数说明:a为一个set类型的变量;b表示要查找并删除的元素
函数作用:在集合setVar中查找element元素,如果存在则删除;如果没找到,则什么也不做。该函数没有返回值
代码示例:
set1 = set("123456")
set1.discard("1") --{'6', '3', '5', '2', '4'}
七、pop用法
函数原型:set1.pop() 删除并返回集合set1中的第一个元素,如果为空引发KeyError错误+
代码示例:
set1 = set("123456") --{'6', '3', '5', '1', '2', '4'}
a = set1.pop() --{'3', '5', '1', '2', '4'} a = "6"
八、clear、copy和len的用法
clear 方法用于清空集合中的所有元素
copy 方法用于集合拷贝
len 跟求序列的长度的函数len()是一样的,返回的是集合中有多少个元素
代码示例:
set1 = set("123456") --{'6', '3', '5', '1', '2', '4'}
#清空集合
set1.clear() --set()
#拷贝set1到set2
set2 = set1.copy() --拷贝后两个集合的内存地址不一致
#求集合长度
len(set1) --6
九、求集合的交集、并集、差集和difference的用法
求集合的交集使用的符号是“&”
求集合的并集用的是符号“|”
求集合的差集使用的符号是减号“-”
difference 等价于集合的差集,查看两个集合的不同之处。这种不同指的是集合s1相对于集合s2,不同的地方,也就是所有在集合s1中,而不再集合s2中的的元素组成的新集合
代码示例:
set1 = set("1234")
set2 = set("2345")
#求交集
set1 & set2 --{'3', '2', '4'}
#求并集
set1 | set2 --{'3', '5', '1', '2', '4'}
#求差集
set1 - set2 --{'1'}
set1.difference(set2) --{'1'}
set2 - set1 --{'5'}
set2.difference(set1) --{'5'}
十、运算符判断集合间关系和issuperset、issubset的用法
集合可以使用大于(>)、小于(<)、大于等于(>=)、小于等于(<=)、等于(==)、不等于(!=)来判断某个集合是否完全包含于另一个集合,也可以使用子父集判断函数。
issuperset 集合st1是否是集合st2的父集
issubset 集合st1是否是集合st2的子集
代码示例:
set1 = set("123456")
set2 = set("345")
#求集合set1是否是set2的父集
set1 >= set2 --true
set1.issuperset(set2) --true
#求集合set1是否是set2的子集
set1 < set2 --false
set1.issubset(set2) --false
十一、不可变集合frozenset的用法
frozenset 该集合中的内容是不可改变的,其他功能及操作跟可变集合set一样
代码示例:
set1 = frozenset('123456') --frozenset({'6', '3', '5', '1', '2', '4'})