目录
[1 集合的声明](#1 集合的声明)
[2 集合的运算](#2 集合的运算)
[3 集合的常用函数](#3 集合的常用函数)
[3.1 len()函数](#3.1 len()函数)
[4 集合的常用方法(了解)](#4 集合的常用方法(了解))
[4.1 add()方法](#4.1 add()方法)
[4.2 update()方法](#4.2 update()方法)
[4.3 remove()方法](#4.3 remove()方法)
[4.4 discard()方法](#4.4 discard()方法)
[4.5 pop()方法](#4.5 pop()方法)
[4.6 del关键字](#4.6 del关键字)
[4.7 copy()方法](#4.7 copy()方法)
[4.8 clear()方法](#4.8 clear()方法)
1 集合的声明
-
集合:集合是一个无序的不重复元素序列。
-
集合的声明:集合通过{}或set()或集合推导式来声明。注意:创建一个空集合必须用 set() 而不是 {},因为 {} 是用来创建一个空字典。
-
集合的特点:
-
集合是无序的;
-
集合的元素不重复,对重复的元素会自动去重;
-
集合中的元素可以是任意不可变的数据类型;
python# 定义空集合 set1 = set() set2 = {}会表示字典类型 print(type(set1),len(set1)) # 定义非空集合 set1 = {9,1,5,6,5,1,2,2} set2 = {"k","k","k","khjj"} print(type(set1),len(set1)) print(type(set2),len(set2)) # 如下集合是非法的,报TypeError: unhashable type: 'list' set3 = {[1,2],"abc"} # 集合是无序的,所以重复执行如下两行代码输出可能不一样 set4 = {1, 3, 5, "hello"} print(set4)
-
-
利用集合中元素不可重复的特点对列表、元组、字符串去重。
python# 例1:对列表去重,只保留不重复的元素 list1=[1,1,1,2,3,2] # 得到的是一个集合 print(type(set(list1))) # 列表转换成集合 print(set(list1)) # 集合转换成列表 print(list(set(list1))) # 例2:对元组去重,只保留不重复的元素 tup1=(1,1,1,3,3,3) #元组转换成集合 print(set(tup1)) #集合转换成元组 print(tuple(set(tup1))) # 例3:利用集合对字符串去重 str1 = "aaaaffffcccc" print((set(str1))) print("".join(set(str1)))
2 集合的运算
集合的运算包括:交集、并集、差集、对称差集
-
交集:取两个集合的公共部分,也就是同时存在于两个集合中的元素。可以通过
运算符&
或者集合的intersection()方法
来实现集合的交集运算。pythonset1={9,1,5,6,5,1,2,2} set2={1,6,2,20,50} # 运算符 print(set1&set2) # 方法 print(set1.intersection(set2))
-
并集:两个集合中的所有元素,重复的元素只算一次。可以通过
运算符|
或者集合的union()方法
来实现集合的并集运算。python#运算符 print(set1|set2) #方法 print(set1.union(set2))
-
差集:
set1-set2
的结果存在于set1
中但不存在于set2
中的元素(set1减去set1和set2的交集
)。可以通过运算符-
或者集合的difference()方法
来实现集合的差集运算。python#运算符 print(set1-set2) #方法 print(set1.difference(set2))
-
对称差集:取两个集合的交集,然后根据交集取两个集合的补集,最后将补集取并集(并集减去交集),即去除两个集合的交集,各自剩下的元素组成一个新的集合。可以通过
运算符^
或者集合的symmetric_difference()方法
来实现集合的对称差集运算。python#运算符 print(set1^set2) #方法 print(set1.symmetric_difference(set2))
集合的使用举例:利用集合来判断两个字典的差异。
python
expect={"name":"张三","age":20,"sex":"男"}
actual={"name":"李四","heigh":170,"sex":"男"}
#实现断言:如果预期和实际不一致,要打印出它们的差异,输出:预期是{"name":"张三","age":20}实际是{"name":"李四","heigh":170}
set_expect=set(expect.items())
set_actual=set(actual.items())
print(set_expect)
print(set_actual)
print("预期是{}实际是{}".format(dict(set_expect-set_actual),dict(set_actual-set_expect)))
3 集合的常用函数
3.1 len()函数
-
格式:len(集合)
-
作用:计算集合中元素的个数
-
举例:
pythonset1 = {1,2,(2,3),"hello"} print(len(set1))
4 集合的常用方法(了解)
4.1 add()方法
-
格式:add(x)
-
作用:将元素x添加到集合中,如果元素已存在,则不进行任何操作
-
举例:
pythonset1 = {1,2,3,4,5} set1.add("nihao") #不能添加列表和字典 print(set1)
4.2 update()方法
-
格式:update(x)
-
作用:可以添加元素,参数x可以是字符串、列表、元组、字典等可迭代类型的数据
-
举例:
pythonset1 = {1,2,3,4,5} set1.update([1,6,7])#要添加可迭代的对象,添加字典时,只添加key值 print(set1)
4.3 remove()方法
-
格式:remove(x)方法
-
作用:将元素x从集合中移除,如果元素不存在,则会拋KeyError异常
-
举例:
python#remove()方法举例 set1 = {1,2,3,4,5} set1.remove(3) #不会返回删除的值 print(set1)
4.4 discard()方法
-
格式:discard(x)方法
-
作用:移除集合中的元素,且如果元素不存在,不会做任何操作也不会拋异常
-
举例:
python#discard()举例 set1.discard(3) #也不会返回删除的值 print(set1)
4.5 pop()方法
-
格式:pop()
-
作用:随机删除集合中的一个元素
-
举例:
python#pop()方法举例 set1.pop() #不用传参数,且随机删除一个元素(每次删除的都是集合排序里的第一个元素),并返回删除的元素 print("删除前",set1) print(set1.pop()) print("删除后",set1)
4.6 del关键字
-
作用:删除整个集合
-
格式:del 集合
-
举例:
python#del,删除整个集合 del set1 print(set1) # 删除后打印会报错
4.7 copy()方法
-
作用:复制集合
-
举例:
pythonset1 = {1,2,(2,3),"hello"} set2 = set1.copy() print(set1,set2)
4.8 clear()方法
-
作用:清空集合
-
举例:
pythonset1 ={1,2,4} set1.clear() print(set1) # 清空过后为空集合set()