• 数据类型-集合set


    一、

    1、用途
    (1)去重
    (2)关系运算
    注:集合的目的是将不同的值存放到一起,不同的集合间用来做关系运算,无需纠结于集合中单个值

    2、定义方式:在{}内用逗号分割开多个元素,其中元素的特点为
    (1)所有的元素必须是不可变类型
    (2)集合内元素不能重复
    (3)集合内元素无序
    s={123,123,123,123,333,4444,555} # s = set(...)
    print(s) #自动去重功能,返回:{555, 123, 4444, 333}

    二、优先掌握的操作

    2.1数据类型转换

    s=set('hello')
    print(type(s)) #返回set
    print(set([11,11,11,22,[33,44])) # 报错:无法把可变类型放入集合

    2.2 去重

    infos = [
    {'name': 'sean', 'age': 18, 'sex': 'male'},
    {'name': 'jack', 'age': 73, 'sex': 'male'},
    {'name': 'tom', 'age': 20, 'sex': 'female'},
    {'name': 'egon', 'age': 18, 'sex': 'male'},
    {'name': 'egon', 'age': 18, 'sex': 'male'},
    ]
    l = [] #建立列表
    for info in infos: #循环判断,info中信息是否在infos内,如果不在则按顺序依次增加
    if info not in l:
    l.append(info)
    print(l)

    print(set(infos)) #报错:unhashable type: 'dict'


    names=['sean','egon','egon',18,18,18,10]
    name = set(names)
    print(name) #{18, 10, 'egon', 'sean'}
    print(type(name)) #set

    2.3关系运算

    2.3.1 手写代码求交集:

    交集
    python_stus=["张三",'sean','jack','lili','李四']
    linux_stus=['李大炮','李二炮','jack','lili','王三炮']
    l = []
    for stu in python_stus:
    if stu in linux_stus:
    l.append(stu)
    print(l) #['jack', 'lili']

    2.3.2 集合的关系运算

    python_stus=["张三",'sean','jack','lili','李四']
    linux_stus=['李大炮','李二炮','jack','lili','王三炮']

    (1)交集:既报名python又报名linux的学员。  符号:&或intersection

    res=python_stus & linux_stus  #&
    print(res) #{'jack', 'lili'} 推荐使用集合符号求交集
    res=python_stus.intersection(linux_stus)
    print(res) #{'jack', 'lili'}

    (2)并集:所有学员的姓名:符号:|或union

    res=python_stus | linux_stus #推荐使用集合符号求并集|
    print(res)
    res=python_stus.union(linux_stus) #union并集
    print(res)

    (3)差集:只报名python的学员 :符号:-;或difference

    res = python_stus - linux_stus #只报名python的学员
    resl =linux_stus - python_stus #只报名linux的学员
    print(res)
    print(resl)
    res = python_stus.difference(linux_stus) #只报名python的学员
    resl = linux_stus.difference(python_stus) #只报名Linux的学员
    print(resl)

    (4)对称差集: 只报名python的学员和只报名了linux的学员   符号:^  或symmetric_difference

    res = (python_stus - linux_stus) | (linux_stus - python_stus) #先求差集后求并集
    resl = linux_stus ^ python_stus # ^求对称差集
    print(res)
    print(resl)
    res= linux_stus.symmetric_difference(python_stus) # symmetric_difference求对称差集
    print(res)

    (5)父子集:包含与被包含的关系   注:包含才能比大小,否则报错。issuperset为包含;issubset为被包含。

    s1={1,2,3}
    s2={1,2}

    print(s1.issuperset(s2)) #成立返回True,否则返回False
    print(s2.issubset(s1)) #成立返回True,否则返回False
    print(s1.issubset(s2)) #成立返回True,否则返回False
    print(s2.issuperset(s1)) #成立返回True,否则返回False
    print(s1 >= s2) # 如果s1包含s2则成立,称之为s1是s2他爹
    print(s2 <= s1) # 如果s1包含s2则成立,称之为s1是s2他爹
    
    
  • 相关阅读:
    【独家】K8S漏洞报告 | 近期bug fix解读
    idou老师教你学Istio 29:Envoy启动流程
    idou老师教你学Istio 28:istio-proxy check 的缓存
    idou老师教你学Istio :5分钟简析Istio异常检测
    idou老师教你学Istio 27:解读Mixer Report流程
    idou老师教你学Istio 26:如何使用Grafana进行可视化监控
    idou老师教你学Istio 25:如何用istio实现监控和日志采集
    idou老师教你学Istio 24:如何在Istio使用Prometheus进行监控
    idou老师教你学Istio 23 : 如何用 Istio 实现速率限制
    idou老师教你学Istio 22 : 如何用istio实现调用链跟踪
  • 原文地址:https://www.cnblogs.com/datatool/p/13360711.html
Copyright © 2020-2023  润新知