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

 

posted @   半步多爱你  阅读(1063)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示