集合类型

 集合类型set
 ======================================基本使用======================================
1、用途:I: 关系运算 II:去重

 2、定义方式:在{}内用逗号分隔开多个元素,但是元素的特点是
 I: 集合内的元素必须是不可变类型
 II: 集合内元素无序
 III: 集合内元素不能重复

 s={1,'aaa',2,} #s=set(...)
 print(s,type(s))

 s=set()
 print(s,type(s))

 s={1,1,1,1,1,1,1,1,1,1,1,1,'a','a','a'}
 print(s)

 数据类型转换
 res=set('hello')
 print(res)

 res=set([1,'a','b'])
 print(res)

 3、常用操作+内置的方法
优先掌握的操作:
1、长度len
2、成员运算in和not in


pythons={'张铁蛋','李铜淡','王金蛋','赵银胆','alex','kevin'}
linuxs={'oldboy','张铁蛋','赵银胆','alex','wxx'}
3、|合集:求所有报名的学生
 print(pythons | linuxs)
 print(pythons.union(linuxs))

4、&交集:求同时报名两门课程的学生
 print(pythons & linuxs)

5、-差集: 求只报名python课程的学员
 print(pythons - linuxs)
 print(linuxs - pythons) #求只报名linux课程的学员

6、^对称差集:求没有同时报名两门课程的学生
 res=(pythons - linuxs) | (linuxs - pythons)
 res=pythons ^ linuxs
 print(res)

7、==
 s1={1,2,3}
 s2={3,2,1}
 print(s1 == s2)

 注意:父子集描述的是一种包含与被包含的关系
8、父集:>=
9、子集:<=
 s1={1,2,3}
 s2={1,2,3,4}
 print(s2 >= s1)
 print(s1 <= s2)

 需要掌握的
 s1={1,2,3}
 s1.update({3,4,5,6})
 print(s1)

s1={1,'aa','bb',3}
 print(s1.pop())

 res=s1.remove('bbbbbb')
 print(s1)
 print(res)

 s1.discard('bbb')
 s1.add(4)
 print(s1)
 ======================================该类型总结====================================
 存多个值

 无序

 可变(1、可变:值变,id不变。可变==不可hash 2、不可变:值变,id就变。不可变==可hash)


 集合的去重
 局限性
1. 只能针对不可变类型
2. 不能保证原来的顺序
 names=['egon','egon','egon','alex','alex','kevin']

 new_names=list(set(names))
 print(new_names)


l=[
{'name':'egon','age':18,'sex':'male'},
{'name':'alex','age':73,'sex':'male'},
{'name':'kevin','age':20,'sex':'female'},
{'name':'egon','age':18,'sex':'male'},
{'name':'egon','age':18,'sex':'male'},
]
new_l=[]
for dic in l:
if dic not in new_l:
new_l.append(dic)

print(new_l)

hash)

原文地址:https://www.cnblogs.com/martin-wang/p/10025322.html