python集合
1、集合:
(1)天生去重,重复内容会去掉不会显示、循环
(2)关系测试:交集、差集、并集、对称差集、反向差集
2、,集合与字典很相近,字典是{k:v}形式的,而集合是{1,2}形式的,集合是无序的,不能用下标取值
list={}是定义一个空字典而不是集合
如果想定义空集合
list=set() 表示定义一个空的集合
定义集合的两种方式:
①list={1,2,3,4}
②list=[1,2,3,4]
list=set(list)
定义三个集合
list1={1,2,3,5,6,8}
list2={2,3,4,5,7}
list3={3,5,8}
3、将list转集合:
list1=[1,2,3,4,5,6]
list1=set(list1)
4、交集(取2个集合里面都有的)
list1.intersection(list2)
另一种写法:list1 & list2
结果:{2,3,5}
5、并集(合并合集,去掉重复的)
list1.union(list2)
另一种写法:list1 | list2
结果:{1,2,3,4,5,6,7,8}
6、差集(取出list1中有的,list2中没有的)
list1.difference(list2)
另一种写法:list1 - list2
结果:{1,6,8}
7、子集(list1完全包含list3的值)
list3.issubset(list1)
结果:True
8、父集(list1的值在list3中都有)
list1.issuperset(list3)
结果:True
9、对称差集(把两个集合里共有的去掉)
list1.symmetric_difference(list2)
另一种写法:list1 ^ list2
结果:{1,4,6,7,8}
10、集合操作:
①给集合添加一个元素
list.add(777)
②给集合同时添加多个元素
list.update([888,999])
③删除元素,不存在的元素会报错
list.remove(999)
④删除元素,不存在的元素不会报错
list.discard(9999)
⑤随机删除元素,当集合是由列表和元组组成时,set.pop()是从左边删除元素
list.pop()
11、练习
要求:
输入密码必须包含大写字母、小写字母、数字、特殊字符
1 import string #引入string模块
2 pwd=input('请输入密码:').strip() #输入密码,去掉空格
3 pwd=set(pwd) #将接收的字符串变为集合类型
4 num1=set(string.ascii_lowercase) #将所有大写字母转换成集合类型赋给num1
5 num2=set(string.ascii_uppercase) #将所有小写字母转换成集合类型赋给num2
6 num3=set(string.digits) #将所有数字转换成集合类型赋给num3
7 num4=set(string.punctuation) #将所有特殊字符转换成集合类型赋给num4
8 if pwd&num1 and pwd&num2 and pwd&num3 and pwd&num4:#判断pwd是否在集合中,使用交集的方式
9 print('密码格式正确')
10 else:
11 print('密码格式错误')