zoukankan      html  css  js  c++  java
  • Python数据类型-集合

    0、什么是集合?

    集合是一个无序的,不重复的数据组合,它的主要作用如下:

    去重,把一个列表变成集合,就自动去重了

    关系测试,测试两组数据之前的交集、差集、并集等关系


    集合(set):把不同的元素组成一起形成集合,是python基本的数据类型。

    集合元素(set elements):组成集合的成员(不可重复)

    集合对象是一组无序排列可哈希(不可变,类似字典的键)的值:集合成员可以做字典的键


    集合分类:可变集合、不可变集合

    可变集合(set):可添加和删除元素,非可哈希的,不能作为字典的键,也不能做其他集合的元素

    不可变集合(frozenset):与上面恰恰相反


    li=[[1,2],'a','b']
    s =set(li) # TypeError: unhashable type: 'list'
    print(s)


    a=set('alex li a')  #有多个 a
    print(a)
    {' ', 'l', 'i', 'a', 'x', 'e'}    # 集合会把重复的去掉,并无序的打印出来
    
    b=['aaa','bbb','aaa']
    s=set(b)
    print(s)
    {'aaa', 'bbb'}      # 列表里有重复,会把重复的去掉



    1、创建集合

    由于集合没有自己的语法格式,只能通过集合的方法 set() frozenset() 创建,或者 {} 来创建

    s1 = set('alvin')
     
    s2= frozenset('yuan')  # 不可变集合
    
    s3={1,2,3}
    
    
    print(s1,type(s1))  #{'l', 'v', 'i', 'a', 'n'} <class 'set'>
    print(s2,type(s2))  #frozenset({'n', 'y', 'a', 'u'}) <class 'frozenset'>


    2、访问集合

    由于集合本身是无序的,所以不能为集合创建索引或切片操作,只能循环遍历或使用in、not in来访问或判断集合元素。

    s1 = set('alvin')
    print('a' in s1)
    print('b' in s1)
    #s1[1]  #TypeError: 'set' object does not support indexing
     
    for i in s1:
        print(i)
    #    
    # True
    # False
    # v
    # n
    # l
    # i
    # a



    3、更新集合

    可使用以下内建方法来更新:

    set.add():增

    set.remove():删

    set.update():改

    注意:只有可变集合才能更新:

    # s1 = frozenset('alvin')
    # s1.add(0)  #AttributeError: 'frozenset' object has no attribute 'add'
     
    s2=set('alvin')
    s2.add('mm')   # ‘mm’ 会作为一个整体存入
    print(s2)  #{'mm', 'l', 'n', 'a', 'i', 'v'}
     
    s2.update('HO')# 添加多个元素,把 HO 拆开,作为单个元素添加进去,如果有重复的,会去重
    print(s2)  #{'mm', 'l', 'n', 'a', 'i', 'H', 'O', 'v'}
    
    s2.update([12,'alex','eee','alvin'])  # 列表里面,元素是一个整体,
    print(s2) # {'l', 'n', 'alvin', 'a', 12, 'i', 'alex', 'v', 'eee'} 
    
    s2.remove('l')   # 指定删除,当值不存在时,会报错
    print(s2)  #{'mm', 'n', 'a', 'i', 'H', 'O', 'v'}
    s2.discard('vvvv') # 指定删除,当值不存在时,不会报错
    
    s2.pop()   # 随机删除一个元素
    s2.clear()  # 清空集合
    del s2:删除集合本身



    4、集合类型操作符

    1 in ,not in:判断某元素是否在集合内

    2 集合等价与不等价(==, !=)

    3 子集、超集

    4 print(a.isdisjoint(b)),两个集合没有任何关联就返回为真

    `H6T5%0QH@8%`POKPO~9$CT[7]

  • 相关阅读:
    hdu 1715 大菲波数
    Netty 应用程序的一个一般准则:尽可能的重用 EventLoop,以减少线程创建所带来的开销。
    引入 netty网关,向flume提交数据
    JavaBean的任务就是: “Write once, run anywhere, reuse everywhere” Enterprise JavaBeans
    API网关+Kubernetes集群的架构替代了传统的Nginx(Ecs)+Tomcat(Ecs)
    tmp
    全量日志 requestId
    googlr 黄金法则 监控
    数据链路层3个基本问题
    netty4.x 实现接收http请求及响应
  • 原文地址:https://www.cnblogs.com/tootooman/p/8970463.html
Copyright © 2011-2022 走看看