资讯专栏INFORMATION COLUMN

[零基础学Python]集合的关系

EdwardUp / 1625人阅读

摘要:冻结的集合前面一节讲述了集合的基本概念,注意,那里所涉及到的集合都是可原处修改的集合。元素与集合的关系元素是否属于某个集合。

冻结的集合

前面一节讲述了集合的基本概念,注意,那里所涉及到的集合都是可原处修改的集合。还有一种集合,不能在原处修改。这种集合的创建方法是:

>>> f_set = frozenset("qiwsir")     #看这个名字就知道了frozen,冻结的set
>>> f_set
frozenset(["q", "i", "s", "r", "w"])
>>> f_set.add("python")             #报错
Traceback (most recent call last):
  File "", line 1, in 
AttributeError: "frozenset" object has no attribute "add"

>>> a_set = set("github")           #对比看一看,这是一个可以原处修改的set
>>> a_set
set(["b", "g", "i", "h", "u", "t"])
>>> a_set.add("python")
>>> a_set
set(["b", "g", "i", "h", "python", "u", "t"])
集合运算

先复习一下中学数学(准确说是高中数学中的一点知识)中关于集合的一点知识,主要是唤起那痛苦而青涩美丽的回忆吧,至少对我是。

元素与集合的关系

元素是否属于某个集合。

>>> aset
set(["h", "o", "n", "p", "t", "y"])
>>> "a" in aset
False
>>> "h" in aset
True
集合与集合的纠结

假设两个集合A、B

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

在交互模式下实验

>>> a           
set(["q", "i", "s", "r", "w"])
>>> b
set(["a", "q", "i", "l", "o"])
>>> a == b
False
>>> a != b
True

A是否是B的子集,或者反过来,B是否是A的超集。即A的元素也都是B的元素,但是B的元素比A的元素数量多。

实验一下

>>> a
set(["q", "i", "s", "r", "w"])
>>> c
set(["q", "i"])
>>> c>> c.issubset(a)   #或者用这种方法,判断c是否是a的子集
True
>>> a.issuperset(c) #判断a是否是c的超集
True

>>> b
set(["a", "q", "i", "l", "o"])
>>> a>> a.issubset(b)   #或者这样做
False

A、B的并集,即A、B所有元素,如下图所示

>>> a
set(["q", "i", "s", "r", "w"])
>>> b
set(["a", "q", "i", "l", "o"])
>>> a | b                       #可以有两种方式,结果一样
set(["a", "i", "l", "o", "q", "s", "r", "w"])
>>> a.union(b)
set(["a", "i", "l", "o", "q", "s", "r", "w"])

A、B的交集,即A、B所公有的元素,如下图所示

>>> a
set(["q", "i", "s", "r", "w"])
>>> b
set(["a", "q", "i", "l", "o"])
>>> a & b       #两种方式,等价
set(["q", "i"])
>>> a.intersection(b)
set(["q", "i"])

我在实验的时候,顺手敲了下面的代码,出现的结果如下,看官能解释一下吗?(思考题)

>>> a and b
set(["a", "q", "i", "l", "o"])

A相对B的差(补),即A相对B不同的部分元素,如下图所示

>>> a
set(["q", "i", "s", "r", "w"])
>>> b
set(["a", "q", "i", "l", "o"])
>>> a - b
set(["s", "r", "w"])
>>> a.difference(b)
set(["s", "r", "w"])

-A、B的对称差集,如下图所示

>>> a
set(["q", "i", "s", "r", "w"])
>>> b
set(["a", "q", "i", "l", "o"])
>>> a.symmetric_difference(b)
set(["a", "l", "o", "s", "r", "w"])

以上是集合的基本运算。在编程中,如果用到,可以用前面说的方法查找。不用死记硬背。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/37343.html

相关文章

  • [基础python]重回函数

    摘要:函数的基本结构中的函数基本结构函数名参数列表语句几点说明函数名的命名规则要符合中的命名要求。在中,将这种依赖关系,称之为多态。不要期待在原处修改的函数会返回结果比如一定要之用括号调用函数不要在导入和重载中使用扩展名或路径。 在本教程的开始部分,就已经引入了函数的概念:《永远强大的函数》,之所以那时候就提到函数,是因为我觉得函数之重要,远远超过一般。这里,重回函数,一是复习,二是要在已经...

    dmlllll 评论0 收藏0
  • [基础Python]正规地说一句话

    摘要:语句,遍列列表字符串字典集合等迭代器,依次处理迭代器中的每个元素。与配合使用处理在程序运行中出现的异常情况。表示此行为空,不运行任何操作。在迭代器函数内使用,用于返回一个元素。恭请到上浏览及时更新的教程零基础学 小孩子刚刚开始学说话的时候,常常是一个字一个字地开始学,比如学说饺子,对他/她来讲,似乎有点难度,大人也聪明,于是就简化了,用饺饺来代替,其实就是让孩子学会一个字就能表达。当然...

    Freeman 评论0 收藏0
  • [基础python]用Python操作数据库(1)

    摘要:操作数据库要对数据库进行操作,需要先连接它。执行后返回值为受影响的行数。执行单条语句但是重复执行参数列表里的参数返回值为受影响的行数例如,要在数据表中插入一条记录,使得,这样做没有报错,并且返回一个结果,说明有一行记录操作成功。 在上一讲中已经连接了数据库。就数据库而言,连接之后就要对其操作。但是,目前那个名字叫做qiwsirtest的数据仅仅是空架子,没有什么可操作的,要操作它,就必...

    lolomaco 评论0 收藏0
  • [基础Python]一二三,集合

    摘要:最简单的说法,即是在最原始的集合论朴素集合论中的定义,集合就是一堆东西。若然是集合的元素,记作。这里对被数学家们称为直观的或朴素的集合论进行一个简短而基本的介绍更详细的分析可见朴素集合论。对集合进行严格的公理推导可见公理化集合论。 回顾一下已经了解的数据类型:int/str/bool/list/dict/tuple 还真的不少了. 不过,python是一个发展的语言,没准以后还出别...

    CastlePeaK 评论0 收藏0
  • [基础python]网站结构

    摘要:年,甲骨文公司收购升阳微系统公司,成为旗下产品。随着的不断成熟,它也逐渐用于更多大规模网站和应用,比如维基百科和等网站。例如维基百科已于年正式宣布将从迁移到数据库。 很早很早的时候,computer这个东西习惯于被称之为计算机,因为它的主要功能是完成一些科学计算的东西,我记得自己鼓捣它的时候,就是计算,根本就没有想到它有早一日还可以用来做别的。后来另外一个名字电脑逐渐被人们接收了,特别...

    AlexTuan 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<