Python-基础类型set
作用
1.去重
集合内不可能出现相同的元素
2.关系运算
如:共同好友、共同关注...、交叉并集...
用集合就是用上面两个功能 如果都用不上 那么就不要用
定义
s = {1,2,3,4,5,6,7,8}
"""
1.集合内的元素必须是不可变类型
2.元素与元素之间逗号隔开 不是键值对
3.集合内的元素也是无序的
"""
# 如何定义空集合
s1 = {}
d1 = {}
print(type(s1),type(d1)) # <class 'dict'> <class 'dict'>
# 定义空集合一定要用set关键字
ss = set()
print(ss,type(ss)) # set() <class 'set'>
类型转换
"""能够被for循环的数据类型都能够被转成集合"""
s1 = set('hello')
print(s1)
s2 = set([1,2,3,4,5,6,7,7,7,7,7])
print(s2)
s3 = set({'username':'yang','password':123})
print(s3)
--------------------------------
{'l', 'h', 'o', 'e'}
{1, 2, 3, 4, 5, 6, 7}
{'username', 'password'}
去重
s = {1,1,1,2,3,3,4,3,2,3,4,6,5,3,}
print(s) # 集合内如果有相同的元素会自动去重
# 去重练习题
l = [4,3,2,3,4,6,7,8,1,2,3]
# 要求1 对列表进行去重不需要保持原来的元素顺序
# 先转成集合
s = set(l)
# 再转成列表
l1 = list(s)
print(l1)
# 要求2 对列表去重之后需要保持原来的元素顺序
new_l = []
for i in l:
if i not in new_l:
new_l.append(i)
print(new_l)
关系运算
# 用户1的好友列表
friends1 = {'jason','tank','tony','jerry'}
# 用户2的好友列表
friends2 = {'jason','tony','owen','oscar'}
# 1 求两个用户的共同好友 交集
res = friends1 & friends2
print(res) # {'jason', 'tony'}
# 2 求两个用户所有的好友
res = friends1 | friends2
print(res) # {'jerry', 'jason', 'oscar', 'tony', 'tank', 'owen'}
# 3 求用户1独有的好友
res1 = friends1 - friends2
res2 = friends2 - friends1
print(res1,res2) # {'jerry', 'tank'} {'owen', 'oscar'}
# 4 求两个用户各自独有的好友 对称差集
res = friends1 ^ friends2
print(res) # {'owen', 'jerry', 'tank', 'oscar'}
# 5 子集 父集
s1 = {12,3,4,5,6}
s2 = {12,6}
print(s1 > s2) # s1是否是s2的父集
print(s2 < s1) # s2是否是s1的子集