day10 基本数据类型(下)
目录
一、集合
1.作用
去重
#set的去重只能正对不可变类型,而且是无序的
l=['a','b',1,'a','a']
s=set(l)
s # 将列表转成了集合
{'b', 'a', 1}
l_new=list(s) # 再将集合转回列表
l_new
['b', 'a', 1] # 去除了重复,但是打乱了顺序
# 针对不可变类型,并且保证顺序则需要我们自己写代码实现,例如
l=[
{'name':'lili','age':18,'sex':'male'},
{'name':'jack','age':73,'sex':'male'},
{'name':'tom','age':20,'sex':'female'},
{'name':'lili','age':18,'sex':'male'},
{'name':'lili','age':18,'sex':'male'},
]
new_l=[]
for dic in l:
if dic not in new_l:
new_l.append(dic)
print(new_l)
# 结果:既去除了重复,又保证了顺序,而且是针对不可变类型的去重
[
{'age': 18, 'sex': 'male', 'name': 'lili'},
{'age': 73, 'sex': 'male', 'name': 'jack'},
{'age': 20, 'sex': 'female', 'name': 'tom'}
]
2.定义
在{}内用都逗号分隔多个元素,元素满足以下三个条件
第一、集合内必须为不可变类型
第二、集合内元素无序
第三、集合内没有重复元素,如有会自动去重
注意:s = {} 默认是空字典,要定义空集合
3.类型转换
print(set("aaaaaaccccbcbcbcb"))#不可转换数字类型
>>>{'b', 'c', 'a'}
4.内置方法
关系运算
4.1交集:两者共有的
set1 = {1,2,3,4}
set2 = {1,3,5,7}
print(set1 & set2)
>>>{1, 3}
4.2合集:两者融合去重
set1 = {1,2,3,4}
set2 = {1,3,5,7}
print(set1 | set2)
>>>{1, 2, 3, 4, 5, 7}
4.3差集:某个集合单独有的
#set1独有的
set1 = {1,2,3,4}
set2 = {1,3,5,7}
print(set1 - set2)
>>>{2, 4}
#set2独有的
set1 = {1,2,3,4}
set2 = {1,3,5,7}
print(set2 - set1)
>>>{5, 7}
4.4对称差集:两个集合各自单独有的组成的集合
set1 = {1,2,3,4}
set2 = {1,3,5,7}
print(set2 ^ set1)
>>>{2, 4, 5, 7}
4.5父子集:判断包含关系
set1 = {1,2,3,4}
set2 = {1,3,5,7}
print(set2 > set1)
>>>False
5.其他内置方法
5.1长度,成员运算,循环(略)
5.2discard(推荐使用),remove
#Remove an element from a set if it is a member.
#If the element is not a member, do nothing.
#文本解释,删除一个元素,如果不存在do nothing
s={1,2,3}
s.discard(4) # 删除元素不存在do nothing
print(s)
>>>{1,2,3}
s.remove(4) # 删除元素不存在则报错
>>>报错
5.2update
s={1,2,3}
s.update({1,3,5})#更新,取合集
print(s)
>>>{1, 2, 3, 5}
5.3pop
s={1,2,3}
res = s.pop()#默认删除第一个元素,并作为返回值返回
print(s)
>>>{2, 3}
print(res)
>>>1
5.4add
s={1,2,3}
s.add((1,2,3))#只能添加不可变类型
print(s)
5.5isdisjoint(了解)
s = {1,2,3,4}
res=s.isdisjoint({3,4,5,6}) # 两个集合完全独立、没有共同部分,返回True
print(res)
False