python学习(九)集合

集合天生去重,且无序

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



原文地址:https://www.cnblogs.com/emilyliu/p/8745205.html