zoukankan      html  css  js  c++  java
  • 集合

    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)
  • 相关阅读:
    hdu 5387 Clock (模拟)
    CodeForces 300B Coach (并查集)
    hdu 3342 Legal or Not(拓扑排序)
    hdu 3853 LOOPS(概率DP)
    hdu 3076 ssworld VS DDD(概率dp)
    csu 1120 病毒(LICS 最长公共上升子序列)
    csu 1110 RMQ with Shifts (线段树单点更新)
    poj 1458 Common Subsequence(最大公共子序列)
    poj 2456 Aggressive cows (二分)
    HDU 1869 六度分离(floyd)
  • 原文地址:https://www.cnblogs.com/huaibin/p/12096471.html
Copyright © 2011-2022 走看看