python中常见的集合关系和集合操作
数学中常见的集合关系有:并集、交集、差集、补集。有A、B两个集合,他们之间的具体关系如下
并集:集合A和集合B中的元素组合在一起,相同的元素只记录一次,产生新的集合
交集:集合A和集合B中都存在的元素组成的新的集合
差集:属于集合A但是不属于集合B中的元素,产生新的集合
补集:属于集合 A,不属于集合B的以及属于集合B不属于集合A的元素集合,就是集合A与集合B的并集减去集合A与集合B的交集
并集 交集
差集 补集
一、并集
并集在python中可以用‘union()’方法和使用‘|’符号,2种方式来实现
'''
set.union() 返回两个集合的并集,即包含了所有集合的元素,重复的元素只会出现一次
set.union(set1, set2...)
参数:
set1:必需,合并的目标集合
set2:可选,其他要合并的集合,可以多个,多个使用逗号 , 隔开。
返回值:返回一个新集合
'''
1.1.使用union方法
setA = {'你好', '哈哈', 'c', '大大'}
setB = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i'}
setC = {(3, 4)}
setD = setA.union(setB,setC)
print(setD) # {(3, 4), '哈哈', '你好', 'd', 'i', 'e', 'b', 'h', 'c', 'a', 'f', 'g', '大大'}
1.2.使用符号'|'
setD = setA|setB|setC
print(setD) # {(3, 4), '哈哈', '你好', 'd', 'i', 'e', 'b', 'h', 'c', 'a', 'f', 'g', '大大'}
二、交集
交集在python中可以用‘intersection()’方法和使用‘&’符号,2种方式来实现
'''
set.intersection() 用于返回两个或更多集合中都包含的元素,即交集
语法:set.intersection(set1, set2 ... etc)
set1:必需,要查找相同元素的集合
set2 :可选,其他要查找相同元素的集合,可以多个,多个使用逗号隔开
返回值:返回一个新的集合
'''
2.1.使用intersection方法
setA = {"dog", "cat", "pig"}
setB = {"dog", "snake", "shark"}
setC = {"dog", "fish", "panda"}
setD = setA.intersection(setB, setC)
print(setD) # {'dog'}
2.2.使用'&'符号
setD = setA & setB & setC
print(setD) # {'dog'}
三、差集
差集在python中可以用‘difference()’方法和使用‘-’符号,2种方式来实现
'''
set.difference() 用于返回集合的差集,即返回的集合元素包含在第一个集合中,但不包含在第二个集合(方法的参数)中,即移除集合中的相同元素
语法: set.difference(set)
参数:
set:必需,用于计算差集的集合
返回值:返回一个新的集合。
'''
3.1.使用difference方法
setA = {"apple", "banana", "cherry"}
setB = {"google", "microsoft", "apple"}
# 表示在集合setA中,不在集合setB中的元素
setC = setA.difference(setB)
print(setC) # {'cherry', 'banana'}
# 表示在集合setB中,不在集合setA中的元素
setD = setB.difference(setA)
print(setD) # {'microsoft', 'google'}
3.2.使用'-'符号
setC = setA-setB
print(setC) # {'cherry', 'banana'}
setD = setB-setA
print(setD) # {'microsoft', 'google'}
四、补集
补集在python中可以用‘symmetric_difference()’方法和使用‘^’符号,2种方式来实现
'''
set.symmetric_difference() 方法返回两个集合中不重复的元素集合,即会移除两个集合中都存在的元素
语法:set.symmetric_difference(set)
参数:
set:集合
返回值:返回一个新的集合
'''
4.1.使用symmetric_difference方法
setA = {'小明', '小红', '小绿'}
setB = {'小军', '小红', '小白'}
setC = setA.symmetric_difference(setB)
print(setC) # {'小明', '小绿', '小白', '小军'}
4.2.使用符号'^'
setC = setA ^ setB
print(setC) {'小明', '小绿', '小白', '小军'}
五、集合的相关操作
5.1 给集合添加元素'add()'方法和‘updata()’方法
'''
set.add() 给集合添加元素,如果添加的元素在集合中已存在,则不执行任何操作,该方法可以添加可哈希(整形、布尔型、字符串、元组)的数据类型
语法: set.add(element)
参数:
element:元素
返回值:返回一个新的集合。
'''
set1 = {"apple", "banana", "cherry"}
# 增加整数
set1.add(1)
print(set1) # {'banana', 'apple', 'cherry', 1}
# 增加布尔值
set1.add(False)
print(set1) # {False, 1, 'cherry', 'banana', 'apple'}
# 增加字符串
set1.add('new')
print(set1) # {False, 1, 'new', 'cherry', 'banana', 'apple'}
# 增加元组
set1.add(('cat', 'panda'))
print(set1) # {False, 1, 'new', 'cherry', 'banana', ('cat', 'panda'), 'apple'}
----------------------------------
'''
set.update() 用于修改当前集合,可以添加可迭代的对象或元素到当前集合中,如果添加的元素在集合中已存在,则该元素只会出现一次,重复的会忽略
语法:set.update(iterable)
参数:
iterable:必需,可迭代的对象
返回值:
'''
set35 = {'你好', '哈哈', 'c', '大大'}
set36 = {'a', 'b', 'c', 'd', 'e'}
# 添加字符串
set35.update('李白')
print(set35) # {'李', '大大', '白', '你好', '哈哈', 'c'}
# 添加集合
set35.update(set36)
print(set35) # {'李', '大大', '白', '你好', '哈哈', 'd', 'e', 'c', 'a', 'b'}
# 添加列表
set35.update(['1,2,3'])
print(set35) # {'李', '大大', '白', '你好', '哈哈', 'd', 'e', 'c', 'a', 'b', '1,2,3'}
# 添加元组
set35.update(('cat', 'fish'))
print(set35) # {'李', '大大', '白', '你好', '哈哈', 'd', 'e', 'c', 'a', 'b', '1,2,3', 'cat', 'fish'}
# 添加字典(将字典的key作为元素,添加进来)
set35.update({'name': 'zy'})
print(set35) # {'李', '大大', '白', '你好', '哈哈', 'd', 'e', 'c', 'a', 'b', '1,2,3', 'cat', 'fish', 'name'}
5.2 移除集合中的元素方法'clear()' 、'remove()'、'discard()'、'pop()'、del
clear(): 移除集合中所有的元素
set1 = {"apple", "banana", "cherry"}
print(f'原集合的内存地址为:{id(set1)}') # 原集合的内存地址为:1849812726944
set1.clear()
print(f'使用clear方法后,原集合的值为:{set1}') # 使用clear方法后,原集合的值为:set()
print(f'使用clear方法后,原集合的内存地址为:{id(set1)}') # 使用clear方法后,原集合的内存地址为:1849812726944
说明:使用clear方法是对原集合进行的操作
remove(): 移除集合中的指定元素,该方法不同于discard() 方法,remove()方法在移除一个不存在的元素时会发生错误,而discard()方法不会
set13 = {"apple", "banana", "cherry"}
set13.remove("apple")
print(set13) # {'cherry', 'banana'}
set13.remove("dog")
print(set13) # KeyError: 'dog'
discard():用于移除指定的集合元素,该方法不同于remove()方法,remove()方法在移除一个不存在的元素时会发生错误,而discard()方法不会
set14 = {"apple", "banana", "cherry"}
set14.discard('banana')
print(set14) # {'cherry', 'apple'}
set14.discard('dog')
print(set14) # 移除集合中不存在的元素,不报错
pop():删除一个元素
set15 = {"dog", "cat", "pig"}
set15.pop()
print(set15) # {'dog', 'cat'} 默认删除最后一个元素
del:删除对象
set16 = {1, 2, 3}
del set16
print(set16) # NameError: name 'set16' is not defined
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具