• Python集合详解


    Python集合详解

    确定的一组无序的数据的组合

    • 集合中的元素值不能重复
    • 多个数组组合的复合型数据(容器类型数据)
    • 数据是无序的
    • 功能:成员检测、去除重复数据、集合类计算,例:交集、并集、差集、对称差集

    集合定义

    • 直接使用{}定义集合
    • 使用set()函数定义或转换
    • 集合推导式定义集合

    注意:集合中的元素不能重复,集合中存放的数据:Number、String、Tuple、冰冻集合

    内置函数

    #定义集合
    vars={123,'a','b','c',True,3.123,(1,2,3),123,False,0,False} # 去重123和False(0代表False),{True, 'a', 3.123, 'b', 'c', 123, (1, 2, 3),0}
    print(vars)
    
    # 检查集合中是否存在值
    print(123 in vars) # True
    
    # 获取集合中长度
    print(len(vars)) # 8
    
    # 遍历集合
    for i in vars:
        print(i)
    
    # vars.add() 向集合中添加元素
    vars.add('java') # {False, True, 3.123, 'b', (1, 2, 3), 'a', 'c', 'java', 123}
    print(vars)
    
    # vars.pop() 删除集合元素
    print(vars.pop()) # 删除任意元素,并返回
    print(vars) # 随机删除,{True, 3.123, 'b', (1, 2, 3), 'a', 'c', 'java', 123}
    
    # vars.remove() 删除指定元素,如果元素不存在返回error
    vars.remove(3.123)
    print(vars) # {True, 'b', 'c', (1, 2, 3), 'a', 'java', 123}
    
    # vars.discard() 删除指定元素,如果元素不存在不报错
    vars.discard('java')
    print(vars.discard('python'))
    print(vars) # {True, 'c', 'a', (1, 2, 3), 'b', 123}
    
    # cars.update() 更新集合
    vars.update({1,2,3,4,5}) # Ture 代表1 {True, 2, 3, 4, 5, (1, 2, 3), 'a', 'b', 123, 'c'}
    print(vars)
    
    # vars.copy() 浅拷贝
    newset=vars.copy()
    print('newset=',newset) # newset= {'c', True, 'a', 2, 3, 4, 5, (1, 2, 3), 'b', 123}
    
    # 冰冻集合
    v = frozenset((1,23,32))
    print(v) # frozenset({32, 1, 23})
    
    # vars.clear() 清空集合
    vars.clear()
    print(vars) # set()
    

    冰冻集合

    语法:定义冰冻集合只能用 frozenset()函数,冰冻集合一单定义不可修改,冰冻集合只能做集合的相关运算,

    frozenset():强制转换类函数,可以把任何容器类型数据装换为冰冻集合

    # 冰冻集合
    v = frozenset((1,23,32))
    print(v) # frozenset({32, 1, 23})
    

    集合推导式

    # 普通推导式
    varset={1,2,3,4,5,6,7,8,9,10}
    newset={i<<1 for i in varset}
    print(newset)
    
    # 条件表达式推导式
    newset={i<<1 for i in varset if i%2==0}
    print(newset)
    
    # 多循环列表推导式
    vars1={1,2,3,4,5,6}
    vars2={2,3,4,5,6,7}
    newset={i+j for i in vars1 for j in vars2}
    print(newset)
    newset=[i+j for i in vars1 for j in vars2]
    print(newset)
    

    集合操作

    # 集合运算
    varset1={'python', 'java', 'php', 'c', 'c++', 'vbs', 'shell','true','hello'}
    varset2={'PYTHON', 'JAVA', 'PHP', 'C', 'C++', 'VBS', 'SHELL','true','hello'}
    
    # 求两个集合的交集(两个集合的相同元素)
    res=varset1 & varset2
    print(res) # {'true', 'hello'}
    
    # 求两个集合的并集(去重)
    res=varset1 | varset2
    print(res) # {'php', 'shell', 'JAVA', 'VBS', 'C', 'SHELL', 'c', 'java', 'vbs', 'c++', 'C++', 'true', 'hello', 'PYTHON', 'python', 'PHP'}
    
    # 求两个集合的差集
    res=varset1 - varset2 # varset1中有varse2中没有
    print(res) # {'php', 'python', 'c++', 'java', 'c', 'shell', 'vbs'}
    
    # 求两个集合的对称差集 (去掉相同元素)
    res=varset1^varset2
    print(res) # {'PYTHON', 'C', 'vbs', 'php', 'c++', 'python', 'SHELL', 'java', 'VBS', 'shell', 'c', 'PHP', 'C++', 'JAVA'}
    
  • 相关阅读:
    两台oracle数据库相互导数据(转载)
    resin之jvm优化
    求一表中每一个类别共有几条记录数
    jQuery+Ajax+Struts2.0
    改进nginx访问resin的性能
    通过web修改squid用户上网密码
    jvm优化
    Samba通过ad域进行认证并限制空间大小
    Samba 与squid 都可以统一使用域(AD)验证
    ASP.NET 下载文件
  • 原文地址:https://www.cnblogs.com/hekaiqiao/p/15572223.html
Copyright © 2020-2023  润新知