目录
8.1 s.symmetric_difference(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'