本文简单介绍了Python语言里set类型自带的方法,set类型表示元素和集合的从属关系(membership),和列表等序列相比,最大的特点是无序。可以跟数学里的集合概念完全对应起来。

目录

概念

数学里的集合概念,在Python语言里对应的是set类型。与list,tuple不同的地方是,set更加强调的是一种“从属关系”(membership),跟顺序无关,所以有重复的元素会先排除。

>>> set([1, 1, 1, 1, 2, 3])

set([1, 2, 3]) #重复元素被排除

>>> set([3, 2, 1])

set([1, 2, 3]) #无序的集合

>>>

set类型的创建

花括号用来创建set类型的变量,这与字典很类似,只是缺少了value,后面会逐渐发现,set类型和字典的key有一些类似之处,比如:无序、不可重复、必须是hashable的,所以用花括号表示,是理所当然的。

set类型还有一种标准的表示法是 set([…]) ,例如

>>> {'a','b'}

set(['a', 'b'])

>>>

set添加元素

set类型有内置函数add用来给set添加元素

>>> A = {'a','b'}

>>> A.add('c')

>>> A

set(['a', 'c', 'b'])

>>>

set更新元素

set类型有四个内置update函数用来给set添加元素,对应于Python 的集合运算中的4种运算

并集更新

与add类似,只是添加的不是单个元素,而且另一个集合,这和字典的update函数功能非常相似。最后的结果是两个集合的并集

>>> A = {'a','b'}

>>> A.update({'c', 'd'}) #iterable的参数都可以传递

>>> A

set(['a', 'c', 'b', 'd'])

>>>

另一种写法是:@|=@

>>> A = {'a','b'}

>>> A |= {'c', 'd'}

>>> A

set(['a', 'c', 'b', 'd'])

>>>

交集更新

内置函数intersection_update返回的结果是两个集合的交集

>>> A = {'a','b'}

>>> A.intersection_update({'b', 'd'}) #iterable的参数都可以传递

>>> A

set(['b'])

>>>

另一种写法是 &=

>>> A = {'a','b'}

>>> A &= {'b', 'd'}

>>> A

set(['b'])

>>>

差集更新

内置函数difference_update返回的结果是两个集合的差集

>>> A = {'a','b'}

>>> A.difference_update({'b', 'd'}) #iterable的参数都可以传递

>>> A

set(['a'])

>>>

另一种写法是 -=

>>> A = {'a','b'}

>>> A -= {'b', 'd'}

>>> A

set(['a'])

>>>

对称差集更新

内置函数symmetric_difference_update返回的结果是两个集合的对称差集

>>> A = {'a','b'}

>>> A.symmetric_difference_update({'b', 'd'}) #iterable的参数都可以传递

>>> A

set(['a', 'd'])

>>>

另一种写法是 ^=

>>> A = {'a','b'}

>>> A ^= {'b', 'd'}

>>> A

set(['a', 'd'])

>>>

set移除元素

remove函数

set类型有好几个内置函数用来从set中移除已有的元素,首先是remove函数,如果remove的元素不存在,会抛出KeyError异常。

>>> A = {'a','b'}

>>> A.remove('c')

Traceback (most recent call last):

File "", line 1, in

A.remove('c')

KeyError: 'c'

>>>

discard函数

若要不抛出异常,可以使用discard函数

>>> A = {'a','b'}

>>> A.discard('c')

>>> A

set(['a', 'b'])

>>>

pop函数

上述两个函数都是指定set中某一个元素,而pop函数无需指定元素,每次运行时会删除任意一个元素,并返回这个元素的值。当set为空时,抛出 KeyError

>>> A = {'a','b'}

set(['a', 'b'])

>>> A.pop()

'a'

>>> A.pop()

'b'

>>> A.pop()

Traceback (most recent call last):

File "", line 1, in

A.pop()

KeyError: 'pop from an empty set'

>>>

清空set

set的内置函数 clear 用来清空set

>>> A = {'a','b'}

set(['a', 'b'])

>>> A.clear()

>>> A

set([])

>>>

set comprehension

与list、dict类似,set类型也能有comprehension的构造法:

>>> {i for i in range(10)}

set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

>>>

python集合类型_Python 的集合(set)类型相关推荐

  1. python 字符串交集_Python序列--集合(set)

    集合 集合用于保存不重复元素. - 集合和列表非常相似 - 不同点: 1.集合中只能存储不可变对象 2.集合中存储的对象是无序(不是按照元素的插入顺序保存) 3.集合中不能出现重复的元素 集合的所有元 ...

  2. python补集运算_Python 的集合(set)运算

    数学里集合运算在 Python 语言的 set 数据类型中也有对应的运算. 子集⊆.真子集⊂ 判断真子集的 ⊂ 符号,在 Python 语言中,对应 set 类型的 < 运算 判断子集的 ⊆ 符 ...

  3. [转载] python set大小_python set集合

    参考链接: Python集合set Python set集合 最后更新于:2020-03-21 12:06:03 在python变量中除了以前文章所提到的整形int / 浮点数float / 布尔值b ...

  4. [转载] python创建集合set()_python 之集合{}(Set)

    参考链接: Python 集合set pop() 集合# 集合set 是装有独特值的无序"袋子".一个简单的集合可以包含任何数据类型的值.如果有两个集合,则可以执行像联合.交集以及 ...

  5. python提供的三种基本数值类型_Python 基础数据类型-数值类型

    Python 基础数据类型-数值类型 为什么会有数据类型?[了解] 更好分配管理内存 方便统一管理 更贴近人类分类管理习惯 数据类型种类 [熟悉] 数值类型:int.bool.float.comple ...

  6. python set大小_python set集合

    集合set 可变的 无序的 不重复的元素集合 set定义 初始化 set() 生成一个空集合 set(iterable) 可通过可迭代对象生产一个新的集合 s1 =set() s2= set(rang ...

  7. python集合输出_Python之集合

    集合:无序的,不可随机访问的,不可重复的元素集合 # 可以使用大括号 { } 或者 set() 函数创建集合, # 注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个 ...

  8. python语法错误类型_python常见报错类型和异常处理

    更新ing 常见的报错类型和简析.异常处理.其他类型的报错(异常)类型简介.自定义异常 常见的报错类型和简析: 报错类型 报错内容 错误类型判断 错误解决方式 AttributeError 属性错误: ...

  9. 简述python中的数值类型_Python中的数值类型

    本文将介绍Python语言的一种基本数据类型:数值类型. 一. 数值类型 Python语言的数值类型有四种,分别是:整型.长整型.浮点型和复数类型.下面我们首先介绍整型数据. 1.整型 Python语 ...

最新文章

  1. RESTful API 设计规范精讲
  2. 活见鬼,明明删除了数据,空间却没减少!
  3. 窥透Fortran的方方面面
  4. 中国光大集团去年营收1617亿元 同比增长19%
  5. 油管螺纹尺寸对照表_数控加工过程中,如何区分新旧螺纹牌号?
  6. hdu 2454 Degree Sequence of Graph G(可简单图化判定)
  7. Linux——更改文件及目录权限(d rwx r-x r-x字段详解+更改代码指令)
  8. 这真不是网友P的图?雷军微博曝光小米9 SE真机图 彩虹小米有点炫酷
  9. SwipeRefreshLayout + RecyclerView 实现 上拉刷新 和 下拉刷新
  10. 选offer的5个维度
  11. Python 内置函数介绍
  12. python 百度文库_百度文库文档下载地址解析python版【摸索不易,还请支持】
  13. HDFS的命令行使用【常用 hdfs 命令】
  14. UI自动化测试实战--- app订单、web发货(9)
  15. 用等价类划分方法编写测试用例
  16. 概率分布-beta分布
  17. Docker容器内安装wkhtmltox用来html转pdf
  18. 计算机房灭火器采用哪种类型,机房灭火器类型有哪些
  19. vue-router路由防卫
  20. okio篇 1.Buffer

热门文章

  1. vs找不到dll_零基础学习Python_绝对VS相对
  2. 好消息acesse_真实的acesse爱搜索 黑心传销骗子
  3. 到底什么是云计算-转自http://blog.csdn.net/adwu73
  4. Codeforces 432D Prefixes and Suffixes (KMP、后缀数组)
  5. 面向对象发牌Java_面向对象思路的斗地主发牌小程序
  6. python修改电脑名称_python 脚本之批量更改主机名
  7. ie浏览器修复_腾讯安全:IE浏览器曝远程执行代码漏洞 腾讯安全强势推出漏洞修复工具...
  8. mysql架设_服务器架设MySQL开发规范与使用技巧
  9. 安卓java模拟器_用大白话告诉你:Java 后端到底是在做什么?
  10. 20211028 调节和跟踪