集合

在已经学过的数据类型中:

  • 能够索引的,如list/str,其中的元素可以重复
  • 可变的,如list/dict,即其中的元素/键值对可以原地修改
  • 不可变的,如str/int,即不能进行原地修改
  • 无索引序列的,如dict,即其中的元素(键值对)没有排列顺序

现在要介绍另外一种类型的数据,英文是set,翻译过来叫做“集合”。

它的特点是:有的可变,有的不可变;元素无次序,不可重复。

创建set

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

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

set也有一点list的特点:有一种集合可以原处修改.

>>> set_study = set('pingqiang')
>>> set_study
set(['a', 'g', 'i', 'n', 'q', 'p'])

把str中的字符拆解开,形成set.特别注意观察:'pingqiang'中有两个i,但是在set_study中,只有一个i,也就是集合中元素不能重复。

在创建集合的时候,如果发现了重复的元素,就会过滤一下,剩下不重复的。而且集合中的元素没有序列。

除了用set()来创建集合。还可以使用{}的方式,但是这种方式不提倡使用,因为在某些情况下,python搞不清楚是字典还是集合。

>>> s3 = {"facebook",123}       #通过{}直接创建
>>> s3
set([123, 'facebook'])

set的方法

  • add, update
  • pop, remove, discard, clear

不变的集合

以set()来建立集合,这种方式所创立的集合都是可原处修改的集合,或者说是可变的,也可以说是unhashable。

还有一种集合,不能在原处修改。这种集合的创建方法是用frozenset(),顾名思义,这是一个被冻结的集合,当然是不能修改了,那么这种集合就是hashable类型——可哈希。

集合运算

  • 元素与集合的关系

    • 只存在两种关系,属于或者不属于
    >>> aset
    set(['h', 'o', 'n', 'p', 't', 'y'])
    >>> "a" in aset
    False
    >>> "h" in aset
    True
  • 集合与集合的关系
    • A是否等于B,即两个集合的元素完全一样
    • A是否是B的子集,或者反过来,B是否是A的超集。即A的元素也都是B的元素,但是B的元素比A的元素数量多。
    • A、B的并集,即A、B所有元素
    • A、B的交集,即A、B所公有的元素
    • A相对B的差(补),即A相对B不同的部分元素
    • A、B的对称差集

最新文章

  1. Azure Site to Site VPN 配置手册
  2. Fundamentals of MVC
  3. Web前端入门了解
  4. 日常工作生活中的做人做事道理[持续更新ing]
  5. Ubuntu优化-修改启动级别
  6. MFC和Direct3D9一起使用
  7. struts2 笔记01 登录、常用配置参数、Action访问Servlet API 和设置Action中对象的值、命名空间和乱码处理、Action中包含多个方法如何调用
  8. 如何将SQL Server 2008库导入2000中
  9. "HTTP 错误 500.19 请求的页面的相关配置数据无效" 解决办法
  10. Python的 is 运算符
  11. mysql federated engine
  12. Linq 时间对比陷阱坑
  13. 谈谈Linux内存释放
  14. PhoneGap 开发与应用 上传 App Store 在
  15. js公共弹出窗插件
  16. numpy 中的reshape,flatten,ravel 数据平展,多维数组变成一维数组
  17. windows 常用dos命令
  18. Delphi XE5中的新增内容
  19. hdwiki 前后台版权信息在哪修改
  20. Permission Policies

热门文章

  1. iOS开发跳转指定页面
  2. 【Docker 命令】- run命令
  3. C#常见函数
  4. VS2010中的sln,suo分别是什么含义
  5. 求csdn博客优良编辑方法
  6. linux 装redmine
  7. asp.net异步上传
  8. Qt Pro文件与Qt模块启用
  9. Mysql 基本语句练习
  10. CentOS 服务ftp(vsftpd)