集合(P2)
1、集合间的关系
①判断两个集合是否相等;
用运算符或!=判断。
s1={10,20,30}
s2={10,30,20}
print(s1s2)
print(s1!=s2)
运行→
True
False
②一个集合是否是另一个集合的子集
调用issubset()进行判断
s3={1,2,3,4,5,6,7,8}
s4={1,3,5,7}
s5={2,6,10}
print(s4.issubset(s3))
print(s5.issubset(s3))
运行→
True
False
③一个集合是否是另一个集合的超集
调用issuperset()进行判断
print(s3.issuperset(s4))
print(s5.issuperset(s4))
运行→
True
False
④两个集合是否有交集
调用isdisjoint()判断
print(s3.isdisjoint(s4))
print(s4.isdisjoint(s5))
运行→
False
True
注:;有交集输出为False;没有交集输出为True。
2、集合间的数学操作
①交集
调用intersection(),其与&是等价的
s1={1,2,3,5,6,8,9}
s2={1,2,6,9,10,11}
print(s1.intersection(s2)) #intersection()与&等价,交集操作
print(s1 & s2)
运行→
{1, 2, 6, 9}
{1, 2, 6, 9}
②并集
调用union(),其与| 是等价的
s3={1,2,3,4,5}
s4={4,5,6,7,8}
print(s3.union(s4)) #union()与| 是等价的,并集操作
print(s3| s4)
运行→
{1, 2, 3, 4, 5, 6, 7, 8}
{1, 2, 3, 4, 5, 6, 7, 8}
③差集
调用difference(),其与-等价,差集操作
print(s3.difference(s4)) #difference()与-是等价的,差集操作
print(s3-s4)
运行→
{1, 2, 3}
{1, 2, 3}
④对称差集
调用symmetric_difference(),与^等价,对称差集操作
print(s3.symmetric_difference(s4)) #symmetric()与^是等价的,
print(s3^s4)
运行→
{1, 2, 3, 6, 7, 8}
{1, 2, 3, 6, 7, 8}
3、集合生成式
s={ ii for i in range(6)}
print(s)
注:将{}改成[]就是列表生成;没有元组生成式,因为元组是不可变序列。
#列表生成式
lst=[ii for i in range(9)]
print(lst)
#集合生成式
s={i*i for i in range(9)}
print(s)
运行→
[0, 1, 4, 9, 16, 25, 36, 49, 64]
{0, 1, 64, 4, 36, 9, 16, 49, 25} #集合是无序的
4、总结