zoukankan      html  css  js  c++  java
  • 集合类型-课堂笔记整理

    集合类型

    pythoners=['王大炮','李二丫','陈独秀','艾里克斯','wxx','欧德博爱']
    linuxers=['陈独秀','wxx','egon','张全蛋']

    l1=[]
    for stu in pythoners: # for循环求并集
    if stu in linuxers:
    # print(stu)
    l1.append(stu)

    print(l1)

    l2=[]
    for stu in pythoners: # for循环求差集
    if stu not in linuxers:
    # print(stu)
    l2.append(stu)

    print(l2)


    一:基本使用
    1 用途: 关系运算、去重

    2 定义方式:{}内用逗号分隔开多个元素,每一个元素都必须是不可变(即可hash)类型
    强调:
    2.1 集合内元素都必须是不可变(即可hash)类型
    2.2 集合内的元素无序 无序指的是打印循环里的元素时不按照顺序排列。无序,所以没有索引取值这个概念。
    2.3 集合内的元素不能重复
    集合是一个整体,所以基本不用对里面的元素进行操作

    s={1,2,'a'} #s=set({1,2,'a'})
    print(type(s))

    s={1.1,1,'aa',(1,2,3),{'a':1}} # 会报错,集合里的元素必须是不可变的,可hash的。

    s={1,'a','hello',(1,2,3),4}
    for item in s:
    print(item)

    s={1,1,1,1,1,1,1,1,1,'a','b','a'}
    s={(1,2,3),(1,2,3),'a','b','a'}
    print(s)

    print({(1,2,2,2),2,5,"a"}) # 对集合里面的不可变类型,比如元组里面的值不可以去重。

    s=set('hello')
    print(s)
    和列表一样,但是多了个去重。
    {'o', 'e', 'l', 'h'}

    单纯的用集合去重,需要注意的问题是
    1、去重的目标所包含的值必须都为不可变类型
    2、去重的结果会打乱原来的顺序
    names=['asb','asb','asb','wsb','wsb','egon_nb',[1,2,3]]
    s=set(names) # 集合里的元素必须是不可变的

    names=list(s)
    print(names)


    3 常用操作+内置的方法
    优先掌握的操作:
    1、长度len
    pythoners={'王大炮','李二丫','陈独秀','艾里克斯','wxx','欧德博爱'}
    print(len(pythoners)) # 集合长度

    2、成员运算in和not in
    print('李二丫' in pythoners)


    pythoners={'王大炮','李二丫','陈独秀','艾里克斯','wxx','欧德博爱'}
    linuxers={'陈独秀','wxx','egon','张全蛋'}
    3、|并集
    print(pythoners | linuxers)
    print(pythoners.union(linuxers))

    {'egon', '艾里克斯', '欧德博爱', '王大炮', '陈独秀', '李二丫', '张全蛋', 'wxx'}

    4、&交集
    print(pythoners & linuxers)
    print(pythoners.intersection(linuxers))
    print(linuxers & pythoners)

    {'陈独秀', 'wxx'}

    5、-差集 # 去除重复的,剩下的元素组成了差集
    print(pythoners - linuxers) # pythoners剩下的元素
    print(pythoners.difference(linuxers))
    print(linuxers - pythoners) 3 linuxers 剩下的元素
    print(linuxers.difference(pythoners))

    {'李二丫', '艾里克斯', '王大炮', '欧德博爱'}

    6、^对称差集 取出重复的剩下的所有元素,又称交叉补集,根据字面意思理解就是交叉部分的补集。
    print(pythoners ^ linuxers)
    print(pythoners.symmetric_difference(linuxers))

    print(linuxers ^ pythoners)
    {'王大炮', '李二丫', '张全蛋', '艾里克斯', '欧德博爱', 'egon'}
    7、==
    s1={1,2,3}
    s2={1,2,3}
    print(s1 == s2)

    8、父集(包含关系):>,>=
    s1={1,2,3,4,5}
    s2={1,2,3}
    # print(s1 > s2) # s1包含s2
    print(s1.issuperset(s2)) # 判断s1是否是s2的父集。
    print(s2.issubset(s1)) # 判断s2是否是s1的子集。

    s3={1,2,10}
    print(s1 > s3)

    s1={1,2,3,4,5}
    s2={1,2,3,4,5}
    print(s1 >= s2)

    9、子集(被包含的关系):<,<=

    s1={1,2,3,4,5}
    s1.add(6)
    集合里面添加值
    s1.add(element)
    print(s1)
    s1.add((1,2,3))
    print(s1)

    s1.update({4,7,8,9}) # 注意去重
    print(s1)

    res=s1.pop() # 随机删除
    print(res)

    res=s1.remove(4) # 移除元素
    print(res) # 返回None
    print(s1)

    s1={1,2,3,4,5}
    s2={2,3,7,8}
    s1=s1 - s2
    print(s1)
    s1.difference_update(s2) # s1=s1 - s2 # 得到的差集赋值给s1
    print(s1)
    s1.difference(s2) # 只是单纯比较差集,不会把得到的差集赋值给s1
    print(s1)


    集合三种删除操作
    s1={1,2,3,4,5}
    res = s1.pop()
    print(res)
    # s1.remove(7) # 没有要删除的元素会报错
    s1.discard(7) # 即便要删除的元素不存在也不会报错

    s1={1,2,3,4,5}
    s2={5,6,7,8}
    print(s1.isdisjoint(s2)) # 判断是否有交集




    #二:该类型总结
    1 存一个值or存多个值
    可以存多个值,值都必须为不可变类型

    2 有序or无序
    无序

    3 可变or不可变
    set集合是可变类型
    s={1,2,3}
    print(id(s))
    s.add(4)
    print(s)
    print(id(s))



    =====================集合的去重==========================
    单纯的用集合去重,需要注意的问题是:
    1、去重的目标所包含的值必须都为不可变类型
    2、去重的结果会打乱原来的顺序
    names=['asb','asb','asb','wsb','wsb','egon_nb',[1,2,3]]
    s=set(names)

    names=list(s)
    print(names)

    stu_info=[
    {'name':'egon','age':18,'sex':'male'},
    {'name':'egon','age':18,'sex':'male'},
    {'name':'egon','age':18,'sex':'male'},
    {'name':'alex','age':73,'sex':'male'},
    {'name':'oldboy','age':84,'sex':'female'},
    ]

    new_info=[]
    for info in stu_info:
    if info not in new_info:
    new_info.append(info)

    print(new_info)


     

  • 相关阅读:
    Can't remove netstandard folder from output path (.net standard)
    website项目的reference问题
    The type exists in both DLLs
    git常用配置
    Map dependencies with code maps
    How to check HTML version of any website
    Bootstrap UI 编辑器
    网上职位要求对照
    Use of implicitly declared global variable
    ResolveUrl in external JavaScript file in asp.net project
  • 原文地址:https://www.cnblogs.com/Roc-Atlantis/p/9121470.html
Copyright © 2011-2022 走看看