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

    前言

    该文章描述了Python数据类型当中集合的概念

    2020-01-17

    天象独行

      集合也是属于python语言当中的一种数据类型,特点是:有的可变,有的不可变,元素无次序,不可重复。如果说元组(tuple)算是列表(list)和字符串(str)的杂合,那么集合(set)则可以堪称是list和dict的杂合。集合拥有类似字典的特点:可以用{}花括号来定义;其中的元素没有序列,也就是非序列类型的数据;而且集合中的元素不可重复,这就类似于dict键。集合也有一点列表的特点:有一种集合可以在原处修改。

      0X01;创建集合

        1;set()方法创建

        注意:set()创立的集合都是可原地修改的集合,或者说是可变的,也可以说是unhashabl

    >>> x = set('aaron')
    >>> x
    {'n', 'o', 'a', 'r'}
    >>> 

        2;通过{}创建

        注释:通过{}无法创建含有列表或者字典类型对象元素的集合。

    >>> y = {'w','asdfads','owenoeo'}
    >>> y
    {'owenoeo', 'w', 'asdfads'}
    >>> 

        3;通过frozenset()创建

        注释:这种集合的创建方法是用frozenset()不能原地修改  

    >>> a = frozenset("asdfgh")
    >>> a
    frozenset(['a', 'd', 'g', 'f', 'h', 's'])
    >>> 

      0X02;集合函数

        我们都知道“万物皆对象”,这里面当然也是包括集合的,那么集合有没有继承一些对象的方法呢?这些方法怎么使用呢?正常我们通过dir()方法来查看对象包含了哪些方法,help查看如何使用方法。

        1;查看集合包含方法

    >>> x = set('aaron')
    >>> x
    {'n', 'o', 'a', 'r'}
    >>> y = {'w','asdfads','owenoeo'}
    >>> y
    {'owenoeo', 'w', 'asdfads'}
    >>> dir(x)
    ['__and__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__iand__', '__init__', '__init_subclass__', '__ior__', '__isub__', '__iter__', '__ixor__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__or__', '__rand__', '__reduce__', '__reduce_ex__', '__repr__', '__ror__', '__rsub__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__xor__', 'add', 'clear', 'copy', 'difference', 'difference_update', 'discard', 'intersection', 'intersection_update', 'isdisjoint', 'issubset', 'issuperset', 'pop', 'remove', 'symmetric_difference', 'symmetric_difference_update', 'union', 'update']

        2;查看方法作用

    >>> help(x.update)
    Help on built-in function update:
    
    update(...) method of builtins.set instance
        Update a set with the union of itself and others.

       0X03;集合运算

        1;元素与集合的关系

        元素与集合就一种关系,要么属于某个集合,要么不属于。

    >>> b = frozenset("sdfgf")
    >>> b
    frozenset({'d', 'f', 's', 'g'})
    >>> "d" in b
    True
    >>> "u" in b
    False
    >>> 

        2;集合与集合的关系

        假设两个集合A、B

          2.1;A是否等于B,即两个集合的元素是否完全一样。

    >>> x = set("qwer")
    >>> y = set("qwer")
    >>> x
    {'w', 'q', 'r', 'e'}
    >>> y
    {'w', 'q', 'r', 'e'}
    >>> x == y
    True
    >>> x != y
    False
    >>> 

          2.2;A是否是B的子集,或者反过来,B是否是A的超集,即A的元素是否也都是B的元素,且B的元素比A的元素数量多。判断集合A是否是集合B的子集,可以使用A<B,返回True则是子集,否则不是。另外,还可以使用函数A.issubset(B)判断。

    >>> a = set("qazwsxedc")
    >>> b = set("qazwsx")
    >>> a
    {'x', 'c', 'z', 'd', 'w', 'q', 'a', 's', 'e'}
    >>> b
    {'x', 'z', 'w', 'q', 'a', 's'}
    >>> a < b
    False
    >>> a > b
    True
    >>> 

          2.3;A、B的并集,即A、B所有元素。可以使用的符号是“|”,是一个半角状态下的竖线,输入方法是在英文状态下,按下“shift”加上右方括号右边的那个键。表达式是A|B也可使用函数A.union(B),得到的结果就是两个集合并集,注意,这个结果是新生成的一个对象,不是将结合A扩充

    >>> a = set("qazwsxedc")
    >>> b = set("pl,okmijn")
    >>> c = a | b
    >>> c
    {'l', 'k', 'x', 'c', 'j', 'z', 'i', 'd', ',', 'p', 'o', 'n', 'w', 'q', 'a', 's', 'm', 'e'}
    >>> 

          2.4;A、B的交集,即A、B所公有的元素,使用“&”来操作

    >>> a = set("qazwsxedc")
    >>> b = set("edcrfvtgb")
    >>> c = a & b
    >>> c
    {'d', 'c', 'e'}
    >>> 

          2.5;)A相对B的差(补),即A相对B不同的部分元素。使用“-”来操作

    >>> a = set("qazwsxedc")
    >>> b = set("edcrfvtgb")
    >>> c = a - b
    >>> c
    {'x', 's', 'z', 'q', 'a', 'w'}
    >>> 

      

  • 相关阅读:
    session 和 aplication 相关总结
    asp.net网站发布时碰到的一些问题
    考前防脑瘫防挂分预防针
    【游记】NOIP2021 白给记
    SELECT list is not in GROUP BY clause and contains nonaggregated
    StringUtils.isEmpty()
    gitLab生成SSH私钥后上传代码及获取代码
    tomcat配置https请求访问
    Mybatis:映射文件概述 & 增删改查
    Mybatis:核心文件概述
  • 原文地址:https://www.cnblogs.com/aaron456-rgv/p/12205406.html
Copyright © 2011-2022 走看看