zoukankan      html  css  js  c++  java
  • Python学习心得第三周-01 集合

    #作用:去重,关系运算,

    #定义:
                知识点回顾
                可变类型是不可hash类型
                不可变类型是可hash类型

    #定义集合:
                集合:可以包含多个元素,用逗号分割,
                集合的元素遵循三个原则:
                 1:每个元素必须是不可变类型(可hash,可作为字典的key)
                 2:没有重复的元素
                 3:无序

    !!!注意集合的目的是将不同的值存放到一起,不同的集合间用来做关系运算,无需纠结于集合中单个值

    #优先掌握的操作:

    #1、集合的定义以及3个注意点

    #2、集合的关系运算

    #3、len,in not in

    #4、for循环遍历集合

    #需要掌握:(*****)

    #1、集合的去重以及局限性

    #2、往集合内添加或删除元素,add,update,pop,remove,discard

    pythoners=['alexdsb','egon','lxxdsb','oldboy','吴三江','张铁蛋']
    linuxers=['张刚蛋','李铜弹','赵银蛋','alexdsb','oldboy','李蛋蛋']
    
    
    l=[]
    for item in pythoners:
        if item in linuxers:
            l.append(item)
    
    print(l)
    

      

    # 集合类型:
    #作用:
    #1、去重
    #2、关系运算

    # 定义:逗号分隔开多个元素
    # 注意:
    # 1、每一个元素都必须是不可变类型
    # 2、集合内元素不能重复
    # 3、集合内元素无序
    s={1,2,1,1,1,1,1,1,1} #s=set({1,2})
    print(type(s))
    print(s)
    
    s=set('hello') #{}
    print(s)
    

      

    #1、|合集
    #2、&交集
    #3、-差集
    #4、^对称差集
    #5、==
    #6、父集:>,>=
    #7、子集:<,<=

    #1、关系运算
    pythoners={'alexdsb','egon','lxxdsb','oldboy','吴三江','张铁蛋'}
    linuxers={'张刚蛋','李铜弹','赵银蛋','alexdsb','oldboy','李蛋蛋'}
    
    #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))
    
    #1.6 ==
    s1={1,2,3}
    s2={3,2,1}
    print(s1 == s2)
    
    # 注意:只有在两个集合存在包含与被包含的关系时才可以进行大小的比较
    #1.7、父集:>,>=
    s1={1,2,3}
    s2={1,2}
    print(s1 > s2) # s1是s2的父集
    print(s1 >= s2) # s1是s2的父集
    
    print(s1.issuperset(s2)) #s1 >= s2
    
    s3={1,2,3}
    s4={3,4,5,6}
    
    print(s4 >= s3)
    #1.8、子集:<,<=
    print(s2.issubset(s1)) #s2 <= s1
    
    
    print(len({1,2,3}))
    print(1 in {1,2,3})
    
    # 集合其他的内置方法
    s1={1,2,3,4,5}
    print(id(s1))
    s1.add(6)
    print(s1)
    print(id(s1))
    
    s2={3,4}
    s1.difference_update(s2) ## s1=s1.difference(s2) #s1=s1 - s2
    print(s1)
    
    s3={6,7}
    print(s1.isdisjoint(s3))
    
    #  删除
    print(s1.pop()) # 随机删除
    s1.discard(333333) # 指定元素删除,,如果元素不存在也不报错
    s1.remove(3333) # 指定元素删除,如果元素不存在则报错
    print(s1)
    
    s1={1,2,3,4,5}
    s1.update({3,4,5,6,7})
    s1.update('hello')
    print(s1)
    

      

    #去重
    #局限性:
    #1、不能保证原来的顺序
    #2、不能针对可变类型去重
    l=[1,1,1,1,'egon','alex','egon',{'x':1}]
    s=set(l) #{1,'egon','alex'}
    print(s)
    
    l=list(s) #[]
    print(l)
    
    
    # 需求:
    #1、列表内的元素有可变类型
    #2、去重之后要保持原来顺序
    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
    print(info)
    
    # 循环
    s={'egon','alex','wxx','lxx'}
    for item in s:
        print(item)
    

      



  • 相关阅读:
    iOS app版本更新CheckVersion_Swift
    ios插件化开发
    开源框架RSA_Swift
    iOS SKStoreProductViewController的应用
    FMDB的使用
    iOS的MVP设计模式
    iOS UI帧率优化经验
    SKStoreReviewController之程序内评价
    Axure使用chrome插件
    修改每次《创建》项目maven仓库的默认路径
  • 原文地址:https://www.cnblogs.com/zhutiancheng/p/9316534.html
Copyright © 2011-2022 走看看