下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

python集合的相关概念

作者:课课家教育     来源: http://www.kokojia.com点击数:908发布时间: 2016-04-12 17:10:15

标签: python集合python集合入门python

大神带你学编程,欢迎选课

  要知道Python是一门不断发展的语言它的数据类型不断增长,有时难免记不住。不用怕,那么多数据类型的各种方法,都不需要记忆。只要能够通过某种方法查找到的,就能够查到。下面本文将向大家介绍一个新的数据类型:集合(set),让你轻松学会并记住。

  爱因斯坦在美国演讲的时候,曾有人问:“你可记得声音的速度是多少?你如何记下许多东西?”

  爱因斯坦轻松答道:“声音的速度是多少,我必须查辞典才能回答。因为我从来不记在辞典上已经印着的东西,我的记忆力是用来记忆书本上没有的东西。”

  为了能够在总体上对已经学习过的数据类型有了解,我们不妨做如下分类:

  1.是否为序列类型:即该数据的元素是否能够索引。序列类型的包括str/list/tuple

  2.是否可以原处修改:即该数据的元素是否能够原处修改。特别提醒一下,这里说的是原处修改问题,有的资料里面说str不能修改,也是指原处修改问题。为了避免误解,特别强调了原处。能够原处修改的是list/dict(特别说明:dict的键必须是不可修改的,dict的值可原处修改)

  什么原处修改?看官能不能在交互模式下通过实例解释一下?

  从基本道理上说,python中的数据类型可以很多,因为每个人都可以自己定义一种数据类型。但是,python官方认可或者说内置的数据类型,就那么几种了。在以后的开发过程中,包括今天和以往介绍的数据类型是常用的。当然,自己定义一个也可以,但是用原生的更好。

  创建set

  tuple算是list和str的杂合,那么set则可以堪称是list和dict的杂合。

  set拥有类似dict的特点:可以用{}花括号来定义,其中的元素没有序列,也就是是非序列类型的数据。而且,set中的元素不可重复,这就类似dict的键。

  set也有继承了一点list的特点:如可以原处修改(事实上是一种类别的set可以原处修改,另外一种不可以)。

  下面通过实验,进一步理解创建set的方法:

   再大胆做几个探究,请看官注意观察结果:

  从上述实验中,可以看出通过{}无法创建含有list/dict元素的set。

  继续探索一个情况:

  上面的探索中,将set和list做了一个对比,虽然说两者都能够做原处修改,但是通过索引编号(偏移量)的方式,直接修改。list允许,但是set报错。

  那么,set如何修改呢?

  更改set

  还是用前面已经介绍过多次的自学方法,把set的有关内置函数找出来,看看都可以对set做什么操作。

      >>> dir(set)
    ['__and__', '__class__', '__cmp__', '__contains__', '__delattr__', '__doc__', '__eq__', '_

  为了看的清楚,我把双划线__开始的先删除掉(后面我们会有专题讲述这些):

  然后用help()可以找到每个函数的具体使用方法,下面列几个例子:

  增加元素

  下面在交互模式这个最好的实验室里面做实验:

  

  特别说明一下{}这个东西,在dict和set中都用。但是,如上面的方法建立的是dict,不是set,这是python规定的。要建立set,只能用前面介绍的方法了。

  除了上面的增加元素方法之外,还能够从另外一个set中合并过来元素,方法是set.update(s2)

   

  删除

  set.pop()是从set中任意选一个元素,删除并将这个值返回。但是,不能指定删除某个元素。报错信息中就告诉我们了,pop()不能有参数。此外,如果set是空的了,也报错。这条是帮助信息告诉我们的,你们可以试试。

  要删除指定的元素,怎么办?

  跟remove(obj)类似的还有一个discard(obj):

  >>> help(set.discard)

  discard(...)

  Remove an element from a set if it is a member.

  If the element is not a member, do nothing.

  与help(set.remove)的信息对比,看看有什么不同。discard(obj)中的obj如果是set中的元素就删除,如果不是,就什么也不做,do nothing。新闻就要对比着看才有意思呢.这里也一样。

  在删除上还有一个绝杀,就是set.clear(),它的功能是:Remove all elements from this set。

  知识

  集合,也是一个数学概念(以下定义来自维基百科)。

  集合(或简称集)是基本的数学概念,它是集合论的研究对象。最简单的说法,即是在最原始的集合论─朴素集合论─中的定义,集合就是“一堆东西”。集合里的“东西”,叫作元素。若然 x 是集合 A 的元素,记作 x ∈ A。

  集合是现代数学中一个重要的基本概念。集合论的基本理论直到十九世纪末才被创立,现在已经是数学教育中一个普遍存在的部分,在小学时就开始学习了。这里对被数学家们称为“直观的”或“朴素的”集合论进行一个简短而基本的介绍,更详细的分析可见朴素集合论。对集合进行严格的公理推导可见公理化集合论。

  在计算机中,集合是什么呢?同样来自维基百科,这么说的:在计算机科学中,集合是一组可变数量的数据项(也可能是0个)的组合,这些数据项可能共享某些特征,需要以某种操作方式一起进行操作。一般来讲,这些数据项的类型是相同的,或基类相同(若使用的语言支持继承)。列表(或数组)通常不被认为是集合,因为其大小固定,但事实上它常常在实现中作为某些形式的集合使用。集合的种类包括列表,集,多重集,树和图。枚举类型可以是列表或集。

  本文内容讲的仅仅是对集合有一个入门,对于初学者来说足够了。

赞(25)
踩(2)
分享到:
华为认证网络工程师 HCIE直播课视频教程