• 【python基础】集合类型


    集合类型:

      作用:  --> 关系运算(交集,并集,差集)

           --> 去重(有局限性)

    定义方法:set()
    linuxers = {1,1.1,'a',(1,2,3)}    ##集合内的值,只能为不可变类型,比如int,str,float,tuple
    print(type(linuxers))
    <class 'set'>

    需要掌握:

    1、集合的定义方法

        定义方法类似于字典,{}内,以逗号分割,但不同于字典之处不是key:varual格式,集合内的元素一定是不可变类型

    1     pythoners = set({'alexdsb','egon','lxxdsb','oldboy','吴三江','张铁蛋'})
    2 
    3     print(pythoners)
    4 
    5     pythoners = {'alexdsb','egon','lxxdsb','oldboy','吴三江','张铁蛋'}
    6 
    7     print(pythoners)

    2、集合的运算(&,-,|,^,)

    例题:以下是报名python和linux的学员信息,请完成对一下两个集合的运算

       1.1、求既报名linux又包名python的学员有哪些=》即求两个集合体的共同部分,称之为交集 print(pythoners & linuxers) print(pythoners.intersection(linuxers)) 1.2、求只报名python,没有报名linux的学员有哪些=》即集合pythoners减去linuxers,称之为差集 print(pythoners - linuxers) print(pythoners.difference(linuxers)) 1.3、求只报名linux,没有报名python的学员有哪些 print(linuxers - pythoners) print(linuxers.difference(pythoners)) 1.4 求老男孩所有报名的学生姓名->即求两个集合体的总和,称之为并集 print(pythoners | linuxers) print(pythoners.union(linuxers)) 1.5 求没有同时报名两门课程的学生姓名->称之为对称差集 print(pythoners ^ linuxers) print(pythoners.symmetric_difference(linuxers))

    3、集合的成员运算(in / not in)

    1     a = {1,2,3}
    2     print(1 in a)
    3     print(1 not in a)

    4、集合的含于被含于的关系运算(>,>=,<=,<)

        a = {1,2,3}
        b = {1,2}
    
        print(a >= b)       ##a包含b
        print(b <= a)       ##b含于a
        print(b < a)
        print(a > b)

    5、集合的去重以及集合去重的局限性

        ** 去重:去重是集合的特性

        a = {1,2,3,4,1,1}       ##去重会将1去除,只保留一个
    
        print(a)
        {1, 2, 3, 4}

    局限性:

        1、不能保证原来的顺序(因为set是不依赖索引的,所以每次打印顺序不一样,所以集合是无序的)

        2、不能针对可变类型去重(list,dict等可变类型不能去重)

    6、集合的内置方法(添加,删除)元素,add,update,pop,remove,discard

    add 添加元素
    
        s={1,2,3}
        s.add(4)        ##在集合后面插入元素
        s.add('hello')
        print(s)   ##{1, 2, 3, 4, 'hello'}
    
    update  添加元素
    
        s1={1,2,3,4,5}
        s1.update({3,4,5,6,7})      ##调用for循环逐个添加
        s1.update('hello')          ##调用for循环,添加h e l l o 字符串
        s1.add('aaa')               ##添加字符串'aaa'到s1
        print(s1)                   ##{1, 2, 3, 4, 5, 6, 7, 'e', 'l', 'o', 'h', 'aaa'}
    
    pop     随机删除集合中的元素
    
        s = {1,2,3}
        s.pop()
    
    remove  指定元素删除,不存在则报错
    
        s = {1,2,3}
        s.remove(1)     ##存在则删除
        s.remove(5)     ##不存在报错
    
    discard 指定元素删除,不存在也不报错
    
        s = {1,2,3}
        s.discard(1)     ##存在则删除
        s.discard(5)     ##不存在也不报错
    
    
    info.clear()        ##清空集合
    info.copy()         ##复制一个集合

    # 循环

        s={'egon','alex','wxx','lxx'}
    
        for item in s:
            print(item)

    # 计算长度

        s={'egon','alex','wxx','lxx'}
        print(len(s))

    去重的两种需求:

    1,全部为不可变类型,并且去重后不要求顺序

        info = {1,1,2,3,2,'yexinlei',2.1,'aaa',('oldboy','egon')}
        info=set(info)
        print(info)
    View Code

    2,包含可变类型(list,dict)并且要求保证去重后保留顺序

    info=[
        {'name':'egon','age':18},
        {'name':'alex','age':73},
        {'name':'egon','age':18},
        {'name': 'lxx', 'age': 19},
        {'name':'egon','age':18},
        {'name':'lxx','age':19},
    ]
    
    l=[]
    
    for dic in info:
        if dic not in l:            ##判断不存在重复则添加
            l.append(dic)
    
    info=l                          ##重新赋值给info
    print(info)
    View Code
    set()
  • 相关阅读:
    eclipse插件开发的打包
    零部件表设计 T_AIS_BASE_PARTS_INFO
    配送计划导入子表设计
    eclipse插件开发流程
    互联网公司的规律.txt
    用户 'sa' 登录失败。 连接SQL2000出现的问题。
    JAVA分页总结
    分类信息网络应用
    关于FLEX中找不到目标对象或通道未定义错误
    即时通讯IM的安全性比较
  • 原文地址:https://www.cnblogs.com/swiki/p/9281862.html
Copyright © 2020-2023  润新知