set 无序集合
特点:没有索引, 里面的数据不会有重复
很少使用来表示数据
如果想让列表,元组中没有重复的元素可以把它们转换成set类型
不能转字典类型,因为格式不一样
set 格式:{元素1,元素2}
集合:无序,不重复
作用:1.>去重 2.> 关系测试<测试两组数据之间的交集,差集,并集,对称差集等关系>
可变类型的集合的更新操作:
add:添加元素
update:更新,添加
remove:删除集合中指定的元素
del:删除集合本身,即把集合这个容器删除
1.交集:
a = {1, 2, 3, 4, 5, 6, 7} b = {11, 12, 13, 4, 15, 6, 7} print(a.intersection(b)) # 交集<二者均有的元素> {4, 6, 7}
2.差集:
a = {1, 2, 3, 4, 5, 6, 7} b = {11, 12, 13, 4, 15, 6, 7} print(a.difference(b)) # 差集<所有属于a且不属于b的元素构成的集合>
3.并集:
a = {1, 2, 3, 4, 5, 6, 7} b = {11, 12, 13, 4, 15, 6, 7} print(a.union(b)) # 并集<a和b中所有的元素> {1, 2, 3, 5, 11, 12, 13, 15}
4.对称差集:
a = {1, 2, 3, 4, 5, 6, 7} b = {11, 12, 13, 4, 15, 6, 7} print(a.symmetric_difference(b)) # 对称差集:也叫反向交集<并集 - 交集> {1, 2, 3, 5, 11, 12, 13, 15}
5.子集关系:
A = {1, 2, 3} B = {1, 2} print(B.issubset(A)) # B是否是A的子集
6.父集关系:
A = {1, 2, 3} B = {1, 2} # super:超,代表父一级,sub:代表子一级 print(A.issuperset(B)) # A是否是B的超集(父集)
7.符号表示 交、差、并、对称差:
"""符号表示:这种更常用""" A = {1, 2, 3} B = {1, 2, 4} print((A | B)) # 并集 print((A & B)) # 交集 print((A - B)) # 差集 print((A ^ B)) # 对称差集 {3, 4} 就是 并集 - 交集
8.可变集合与不可变集合:
""" 可变集合和不可变集合: 可变set:可以添加,删除元素,不可哈希的(因为是可变数据类型) 不可变 frozenset :和元组一样,不可修改,删除.一旦定义创建之后就不能被修改 """
9.不使用集合进行列表去重:
# 作业:在不影响列表中元素的位置情况下把列表中的数据进行去重 list1 = [2,3,2] list2 = [] # 保存没有重复的元素 # index:查找列表中元素对应的索引位置 i = 0 while i < len(list1): element = list1[i] # 取出指定索引的元素 index1 = list1.index(element) # 取出元素在列表中第一次出现的索引 if i == index1: # i是从0开始的有序的,如果地址相等,就添加这个地址对应的元素 list2.append(element) i += 1 print(list2)