• set集合运算 分类: python 20130315 10:53 337人阅读 评论(0) 收藏


           浅谈Python集合运算

    Python提供了多种适用于集合的运算。由于集合是容器,因此内置的len函数可以将一个集合作为其单个参数,并返回该集合对象中项目的数量。集合是可迭代的,因此Python开发者可以将其传递给包含一个可迭代参数的任何函数或方法。在这种情况下,集合中的项目是按照某些任意顺序进行迭代的。例如,对于任意集合Smin(S)将返回S中的最小项目。

    集合成员

    k in S运算符可以检查对象k是否是集合S中的一个项目。如果是,则返回True,如果不是,则返回False。与此类似,k not in S相当于not (k in S)

    集合方法

    集合对象提供了如下表所示的一些方法。非变异方法将返回一个结果,并且不改变其应用的对象,还可以对类型为frozenset的实例调用该方法,而变异方法可能会改变其应用的对象,并且只能对类型为set的实例调用该方法。在下表中,SS1表示任何集合对象,x表示任何可哈希的对象。

    方法

    说明

    非变异方法

    S.copy( )

    返回集合的一个简化副本〔该副本中的项目是集合S中的相同对象,但不是完全的副本)

    S.difference(S1)

    返回在集合S中,但是不在集合S1中的所有项目组成的集合

    S.intersection(S1)

    返回在集合S中,同时也集合S1中的所有项目组成的集合

    S.issubset(S1)

    如果集合S中的所有项目也都在集合S1中,则返回True,否则返回False

    S.issuperset(S1)

    如果集合S1中的所有项目也都在集合S中,则返True,否则返同False(S1.issubset(S)类似)

    S.symmetric_difference(S1)

    返回在集合SS1中,但是不同时在两个集合中的所有项目组成的集合

    S.union(S1)

    返回在集合SS1或同时在这两个集合中的所有项目组成的集合

    变异方法

    S.add(x)

    x添加为集合S中的一个项目;如果x已经是集合S中的一个项目,则不对集合进行任何操作

    S.clear( )

    从集合S中删除所有项目,使得S为空自集合

    S.discard(x)

    删除集合S中的项目x;如果x并不是集合S中的一个项目,则不对集合进行任何操作

    S.pop( )

    删除并返回集合S中的任意一个项目

    S.remove(x)

    删除集合S中的项目x;如果 x不是集合S中的项目,引发一个KeyError异常

    除了pop之外,集合对象的所有变异方法都返回None

    pop方法可以用于对集合进行破坏性的迭代,并且几乎不消耗额外内存。当Python开发者想要的是在执行循环操作的同时“消耗掉”集合(减少集合中的项目)的话,内存的节省使得pop可以用来对巨大的集合执行循环操作。

    集合还包含名为difference_update, intersection_update, symmetric_difference_update, update (对应于非变异方法union)的变异方法。这些变异方法都可以执行与对应的非变异方法相同的操作,但是这些方法要在原地执行操作、改变所调用的集合,并返回None。这4个非变异方法也可以使用运算符语法进行访问:分别是S-S1, S&S1, S^S1, S|S1,对应的变异方法也可以使用增量赋值语法进行访问:分别是S-=S1, S&=S1, S^=S1, S|=S1。在使用运算符或增量赋值语法时,两个操作数都必须是集合或者固定集合(frozenset)。不过,在调用命名方法时,参数S1可以是由可哈希的项目组成的任意迭代,并且其语义就像传递的参数为set(S1)一样。

  • 相关阅读:
    没了解这些,测试人也要为降薪做好准备!
    测试之巅—自动化测试!
    自动化测试现状趋势解读,附带近年自动化测试常用工具
    技术大佬:如何最快速度上手接口测试?(一篇文章搞定)
    三个Python自动化测试高效工具的使用总结
    Postman接口测试实战分享,这5个问题你必须得知道!【软件测试工程师经验分享】
    Python实现性能自动化测试的方法【推荐好文】
    md5加密
    python操作数据库
    time模块:时间戳和格式化好的时间表示方法及互相转换方法
  • 原文地址:https://www.cnblogs.com/think1988/p/4628228.html
Copyright © 2020-2023  润新知