集合天生去重,且无序
1、集合格式
s=set() s2=set('12344556677') print(s) print(s2)
输出结果为:
set() {'5', '3', '6', '1', '2', '7', '4'}
2、交集
交集就是两个集合相同的地方
s2=set('12344556677') s3={'1','1','3','4','5','6','7','9'} print(s3&s2) print(s3.intersection(s2))
两种求交集的方式都可以,输出都为:
{'1', '6', '5', '7', '4', '3'} {'1', '6', '5', '7', '4', '3'}
3、并集
并集就是把两个集合合并到一起并去重
s2=set('12344556677') s3={'1','1','3','4','5','6','7','9'} print(s2|s3) print(s2.union(s3))
两种求并集的方式都可以,输出都为:
{'5', '2', '3', '4', '7', '1', '6', '9'} {'5', '2', '3', '4', '7', '1', '6', '9'}
4、差集
差集指一个集合里有在另一个集合里没有,即去除一个集合里与另一个集合交集的部分
s4 = {1, 2, 3} s5 = {1, 4, 6} print(s4 - s5) # 只有s4里面 print(s4.difference(s5))
两种求差集的方式都可以,输出结果为:
{2, 3}
{2, 3}
5、对称差集
去掉俩集合里都有的
s4 = {1, 2, 3} s5 = {1, 4, 6} print(s4 ^ s5) print(s4.symmetric_difference(s5))
输出结果为:
{2, 3, 4, 6}
{2, 3, 4, 6}
6、集合一些方法
1)加元素
s4 = {1, 2, 3} s5 = {1, 4, 6} s4.add('ss') # 集合加元素 print(s4)
输出结果为:
{1, 2, 3, 'ss'}
2)随机删除
s4 = {7, 2, 3} s4.pop() # 随机删除 print(s4)
输出结果为:
{3, 7}
3)指定删除
s4 = {7, 2, 3,'ss','test'} s4.remove('ss') #指定删除哪一个 print(s4)
输出结果为:
{2, 3, 7, 'test'}
4)把另一个集合加入
s4 = {7, 4, 3,'ss','test'} s4.update({1,2,3}) #把另一个集合加进去 print(s4)
输出结果为:
{1, 2, 3, 4, 7, 'test', 'ss'} #集合会自动去重
7、练习
检验密码里是否包含数字,大写字母,小写字母和特殊字符
import string digits = set(string.digits) upper = set(string.ascii_uppercase) lower = set(string.ascii_lowercase) pun = set(string.punctuation) for i in range(5): pwd =input('请输入密码:').strip() pwd_set =set(pwd) if pwd_set & digits and pwd_set&upper and pwd_set&lower and pwd_set&pun: print('密码合法',pwd) else: print('密码必须包含数字,大写字母,小写字母和特殊字符')
8、isdisjoint()用法
没有交集返回true,有交集返回false
s1={1,2,7} s2={3,4,5} print(s1.isdisjoint(s2))
两个集合没有交集,输出为:true