集合3:方法和运算符—适用set/frozenset(下)

本文详细介绍了Python中集合的四种基本操作:并集(union)、交集(intersection)、差集(difference)和对称差集(symmetric_difference)。通过实例展示了如何使用这些操作以及它们与列表、元组、字典和字符串等不同数据类型的交互。同时,文中还解释了各操作的逻辑和语法,包括使用运算符和方法的不同方式。
摘要由CSDN通过智能技术生成

目录

5. 并集

5.1 s.union(*others)

5.2 set | other | ...

6. 交集 

6.1 s.intersection(*others)

6.2 set & other & ...

7. 差集

7.1 s.difference(*others)

7.2 set - other - ...

8. 对称差集

8.1 s.symmetric_difference(other)

8.2 set ^ other


5. 并集

5.1 s.union(*others)

返回一个新集合,其内容是 s 集合与 others 容器的并集;

对于两个集合 A、B,把他们所有的元素合并在一起组成的集合,叫做集合 A 与集合 B 的并集(Union);  

other可以是列表、元组、字典、字符串等,字典是由键的集合参与并集,字符串是单个字符做为元素参与并集;

*others 可以是多个参数。

s1 = {1,'2',3,'4'}
s2 = {0,1,'3',5}
s3 = [2,'7',8]
s4 = ('1',3,5,6)
s5 = {4:'x',9:'y','10':'z'}
s6 = '0478'

#返回一个新集合,其内容是 s 集合与 others 容器的并集
s1.union(s2)
{0, 1, 3, 5, '3', '4', '2'}

#*others 可以是多个参数
s1.union(s2,s3,s4,s5,s6)
{0, 1, 2, 3, 4, 5, '7', 6, '3', 8, 9, '10', '0', '4', '8', '1', '2'}

5.2 set | other | ...

等价于 s.union(*others);

返回一个新集合,其中包含来自原集合以及 others 指定的所有集合中的元素;

运算符比较,other必须为集合,不支持列表、元组、字典、字符串等可迭代对象。

s1 = {1,'2',3,'4'}
s2 = {0,1,'3',5}
s3 = [2,'7',8]
s7 = {[1,2,3],-5j,9.1,'abcd'}

#s1、s2集合并集形成一个新集合,包含s1、s2 指定的所有集合中的元素
s1 | s2
{0, 1, 3, 5, '3', '4', '2'}

#运算符比较,other必须为集合,不支持列表、元组、字典、字符串等可迭代对象
s1 | s3
Traceback (most recent call last):
  File "<input>", line 1, in <module>
TypeError: unsupported operand type(s) for |: 'set' and 'list'

#可以同时并集多个集合
s1 | s2 | s7
{0, 1, 3, 5, '3', 9.1, (1, 2, 3), (-0-5j), '4', '2', 'abcd'}

6. 交集 

6.1 s.intersection(*others)

返回一个新集合,其内容是 s 集合与 others 容器的交集;

对于两个集合 A、B,由所有属于集合 A 且属于集合 B 的元素所组成的集合,叫做集合 A 与集合 B 的交集(Intersection);  

other可以是列表、元组、字典、字符串等,字典是由键的集合参与交集,字符串是单个字符做为元素参与交集;

*others 可以是多个参数。

s1 = {1,2,3,4,5,6,7,8,'9','10'}

#返回一个新集合,其内容是 s 集合与 others 容器的交集
s2 = {0,1,2,9,'a'}
s1.intersection(s2)
{1, 2}

#s1、s3没有交集,返回空集合
s3 = {'1','2',910}
s1.intersection(s3)
set()

#集合可以和列表、元组、字典、字符串做交集
s4 = [2,4,6,8,10]
s1.intersection(s4)
{8, 2, 4, 6}
s5 = (1,3,5,7,9)
s1.intersection(s5)
{1, 3, 5, 7}
s6 = '8910'
s1.intersection(s6)
{'9'}
s7 = '10'
s1.intersection(s7)
set()
s8 = {0:'a',1:'b'}
s1.intersection(s8)
{1}

#*others 可以是多个参数
s1 = {1,2,3,4,5}
s2 = {0,5,2,6,'a'}
s3 = {2,3,(4,)}
s4 = [1,2,3]
s1.intersection(s2,s3,s4)
{2}

6.2 set & other & ...

返回一个新集合,其中包含原集合以及 others 指定的所有集合中共有的元素;

运算符比较,other必须为集合,不支持列表、元组、字典、字符串等可迭代对象。

s1 = {1,2,3,4,5}
s2 = {0,5,2,6,'a'}
s3 = {2,3,(4,)}
s4 = [1,2,3]

#计算s1、s2的交集
s1 & s2
{2, 5}

#计算s1、s2、s3的交集
s1 & s2 & s3
{2}

#运算符比较,other必须为集合,不支持列表、元组、字典、字符串等可迭代对象。
s1 & s4
Traceback (most recent call last):
  File "<input>", line 1, in <module>
TypeError: unsupported operand type(s) for &: 'set' and 'list'

7. 差集

7.1 s.difference(*others)

返回一个新集合,其内容是存在于 s 集合中,但不存在于 others 容器中的元素;

对于两个集合 A、B,由所有属于集合 A 且不属于集合 B 的元素所组成的集合,叫做集合 A 与集合 B 的差集(Difference);  

other可以是列表、元组、字典、字符串等,字典是由键的集合参与交集,字符串是单个字符做为元素参与交集;

*others 可以是多个参数。

s1 = {1,2,3,4,'5'}

#返回一个新集合,其内容是存在于 s 集合中,但不存在于 others 容器中的元素
s2 = {0,1,2,5}
s1.difference(s2)
{3, 4, '5'}
s3 = {2,3,'5',6}
s1.difference(s3)
{1, 4}

#*others 可以是多个参数。
s1.difference(s2,s3)
{4}

#集合可以和列表、元组、字典、字符串做差集
s4 = [-1,3,4,6,7]
s1.difference(s4)
{1, 2, '5'}
s5 = (3,1,8)
s1.difference(s5)
{2, 4, '5'}
s6 = '456'
s1.difference(s6)
{1, 2, 3, 4}
s7 = {1:'a',2:'b','3':'c'}

#差集不存在,返回空集合
s1.difference(s7)
{3, 4, '5'}
s1.difference(s2,s3,s4)
set()

7.2 set - other - ...

返回一个新集合,其中包含原集合中在 others 指定的其他集合中不存在的元素;

运算符比较,other必须为集合,不支持列表、元组、字典、字符串等可迭代对象。

s1 = {1,2,3,4,'5'}

#返回一个新集合,其中包含原集合中在 others 指定的其他集合中不存在的元素
s2 = {0,1,2,5}
s3 = {2,3,'5',6}
s1 - s2
{3, 4, '5'}
s1 - s2 - s3
{4}

#运算符比较,other必须为集合,不支持列表、元组、字典、字符串等可迭代对象
s4 = [-1,3,4,6,7]
s1 - s4
Traceback (most recent call last):
  File "<input>", line 1, in <module>
TypeError: unsupported operand type(s) for -: 'set' and 'list'

8. 对称差集

8.1 s.symmetric_difference(other)

返回一个新集合,其内容是排除掉 s 集合和 other 容器中共有的元素后,剩余的所有元素;

other可以是列表、元组、字典、字符串等,字典是由键的集合参与交集,字符串是单个字符做为元素参与交集;

支持一个参数,输入多个other参数,报错。

s1 = {1,2,3,4,'5'}

#返回一个新集合,其内容是排除掉 s 集合和 other 容器中共有的元素后,剩余的所有元素
s2 = {0,1,2,5}
s1.symmetric_difference(s2)
s3 = {2,3,'5',6}
{0, 3, 4, 5, '5'}
s1.symmetric_difference(s3)
{1, 4, 6}

#other可以是列表、元组、字典、字符串等
s4 = [-1,3,4,6,7]
s1.symmetric_difference(s4)
{1, 2, 6, 7, '5', -1}
s5 = (3,1,8)
s1.symmetric_difference(s5)
{2, 4, '5', 8}
s6 = '456'
s1.symmetric_difference(s6)
{1, 2, 3, 4, '6', '4'}
s7 = {1:'a',2:'b','3':'c'}
s1.symmetric_difference(s7)
{3, 4, '5', '3'}

#s8 == s1,.symmetric_difference()处理后为空集合
s8 = {1,2,3,4,'5'}
s1.symmetric_difference(s8)
set()

#输入多个other元素,报错
s1.symmetric_difference(s2,s3)
Traceback (most recent call last):
  File "<input>", line 1, in <module>
TypeError: set.symmetric_difference() takes exactly one argument (2 given)

8.2 set ^ other

返回一个新集合,其中的元素或属于原集合或属于 other 指定的其他集合,但不能同时属于两者。

运算符比较,other必须为集合,不支持列表、元组、字典、字符串等可迭代对象。

s1 = {1,2,3,4,'5'}
s2 = {0,1,2,5}
s3 = {2,3,'5',6}
s4 = [-1,3,4,6,7]

#返回一个新集合,其中的元素或属于原集合或属于 other 指定的其他集合,但不能同时属于两者
s1 ^ s2
{0, 3, 4, 5, '5'}
s1 ^ s3
{1, 4, 6}

#运算符比较,other必须为集合,不支持列表、元组、字典、字符串等可迭代对象
s1 ^ s4
Traceback (most recent call last):
  File "<input>", line 1, in <module>
TypeError: unsupported operand type(s) for ^: 'set' and 'list'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

燃烧的火鸟啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值