集合

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)
原文地址:https://www.cnblogs.com/huaibin/p/12096471.html