集合

1、定义: {}内用逗号分隔开多个元素,多个元素满足以下三个条件

1集合内元素必须为不可变类型

2集合内元素无序

3集合内元素没有重复

 s={1,[1,2]}  # 集合内元素必须为不可变类型

 s={1,'a','z','b',4,7}  # 集合内元素无序

 s={1,1,1,1,1,1,'a','b'}  # 集合内元素没有重复

s={} # 默认是空字典

 s=set()  # 定义空集合

2类型转换但凡能被for循环的遍历的数据类型(强调:遍历出的每一个值都必须为不可变类型)都可以传给set()换成集合类型

列表s = set([1,2,3,4])   # {1, 2, 3, 4}

元组 s1= set((1,2,3,4))  # {1, 2, 3, 4}

字典s2 = set({'name':'jason',})  # {'name'}

字符串s3 = set('egon')   # {'e', 'o', 'g', 'n'}

3内置方法

*关系运算

friends1 = {"zero","kevin","jason","egon"}

friends2 = {"Jy","ricky","jason","egon"}

1取交集:两者共同的部分

 res=friends1 & friends2

 print(res)  # {'jason', 'egon'}

 print(friends1.intersection(friends2))

(2)取并集/合集:两者所有的部分

 print(friends1 | friends2) 

# {'jason', 'egon', 'ricky', 'Jy', 'zero', 'kevin'}

 print(friends1.union(friends2)) 

3取差集:取friends1独有的部分

 print(friends1 - friends2) # {'zero', 'kevin'}

 print(friends1.difference(friends2))

# friends2独有的部分

 print(friends2 - friends1)  # {'Jy', 'ricky'}

(3)对称差集: 求两个用户独有的部分(即去掉公共部分)

 print(friends1 ^ friends2) # {'ricky', 'kevin', 'zero', 'Jy'}

print(friends1.symmetric_difference(friends2))

4父子集:包含的关系

 s1={1,2,3}   s2={1,2,4}

# 不存在包含关系,下面比较均为False

 print(s1 > s2)

 print(s1 < s2)

 

 s1={1,2,3}   s2={1,2}

 print(s1 > s2) # s1大于或等于s2时,s1包含s2

 print(s1.issuperset(s2)) # s1 > s2  =>True

 print(s2.issubset(s1))  # s2 < s1  =>True

 s1={1,2,3}   s2={1,2,3}

 print(s1 == s2) # s1s2互为父子

*去重

1只能针对不可变类型去重

2无法保证原来的顺序

*其他操作

1长度.len()

2成员运算innot in

3循环:输出集合里的每个元素

4.discard()  # 删除元素不存在返回None

5.remove()  # 删除元素不存在则报错

6.update()  # 用新集合更新就集合

7.pop()  # 删除元素可返回删除的元素

8.add()  # 添加元素

9.isdisjoint() # 两个集合完全独立、没有共同部分,返回True

10.difference_update() # 相当于差运算

 

数据类型总结:

按存值个数区分

只能存一个值:可称为标量/原子类型

数字类型、字符串

可存放多个值:容器类型

列表、元组、字典、集合

按照访问方式区分

直接访问:只能通过变量名访问整个值

数字类型

顺序访问:可以用索引访问指定的值,索引代表顺序,又称为序列类型

字符串、列表、元组

Key访问:用键访问指定的值,又称映射类型

字典

按可变类型和不可变类型区分

不可变类型

数字类型、字符串、元组

可变类型

列表、字典、集合

posted @ 2020-03-12 19:20  多啦a梦与时光机  阅读(108)  评论(0编辑  收藏  举报