遇见Python集合类型
Python目前有两种内置集合类型,set和frozenset。
Ⅰ、两者区别
set是可变的,没有哈希值,其内容可以使用add()和remove()这样的方法来改变,所以不能被用作字典的键或其他集合的元素。
frozenset是不可变的,并且为hashable,其内容在被创建后不能再改变,因此可以被用作字典的键或其他集合的元素。
Ⅱ、创建集合
两个类的构造器有着相同的作用方式:
class set([iterable])
class frozenset([iterable])
返回一个新的set或frozenset对象,其元素来自于iterable。集合的元素必须为hashable。要表示由集合对象构成的集合,所有的内层集合必须为frozenset对象。如果未指定iterable,则将返回一个新的空集合。
除了可以使用set构造器,非空的set(不是frozenset)还可以通过将以逗号分隔的元素列表包含于花括号之内来创建,例如:
>>> a = {'hello', 'python'}
>>> type(a)
<class 'set'>
当然如果想要建立一个空的集合,则必须用set构造器。
Ⅲ、无序多项集set
set对象是由具有唯一性的hashable对象所组成的无序多项集。常见的用途包括成员检测、从序列中去除重复项以及数学中的集合运算,例如交集、并集、差集与对称差集等等。
与其他多项集一样,集合也支持x in set,len(set)和for x in set。作为一种无序的多项集,集合并不记录元素位置和插入顺序。相应地,集合不支持索引、切片或其他序列类的操作。
Ⅳ、集合操作
set和frozenset的实例提供一下操作:
len(s) # 返回集合s中的元素数量
x in s # 检测x是否为s中的成员
x not in s # 检测x是否非s中的成员
isdisjoint(other) # 如果集合中没有与other共有的元素则返回True
issubset(other) # 等同于set <= other,检测集合是否为other子集
set < other # 检测集合是否为other真子集
issuperset(other) # 等同于set >= other,检测集合是否为other超集
set > other # 检测集合是否为other真超集
# 下面四种方法 返回一个新集合
union(*others) # 等同于set | other | ...,并集
intersection(*others) # 等同于set & other & ...,交集
difference(*others) # 等同于set - other - ...,差集
symmetric_difference(other) # 等同于set ^ other,补集
copy() # 返回原集合的浅拷贝
set的实例与frozenset的实例之间基于它们的成员进行比较。例如set('abc') == frozenset('abc')返回True,set('abc') in set([frozenset('abc')])也一样。
可用于set而不能用于不可变的frozenset实例的操作:
# 下面四种方法 更新集合
update(*others) # 等同于set |= other | ...
intersection_update(*others) # 等同于set &= other & ...
difference_update(*others) # set -= other | ...
symmetric_difference_update(other) # set ^= other
add(elem) # 添加elem元素到集合中
remove(elem) # 从集合中移除元素elem
discard(elem) # 如果元素elem存在集合中则将其移除
pop() # 从集合中移除并返回任意一个元素
clear() # 移除集合中所有元素
Note:issubset(), issuperset(), union(), intersection(), difference(), symmetric_difference(), update(), intersection_update(), difference_update()和symmetric_difference_update()方法会接受任意可迭代对象作为参数。
set('abc') & 'cbs' # 错误
set('abc').intersection('cbs') # 正确
相比之下,它们所对应的运算符版本则要求其参数为集合。 这就排除了容易出错的构造形式例如 set('abc') & 'cbs',而推荐可读性更强的set('abc').intersection('cbs')。
遇见Python集合类型的更多相关文章
- Python集合类型的操作与应用
Python集合类型的操作与应用 一.Python集合类型 Python中的集合类型是一个包含0个或多个数据项的无序的.不重复的数据组合,其中,元素类型只能是固定数据类型,如整数.浮点数.字符串.元组 ...
- 代码与图详解性能之Python集合类型(list tuple dict set generator)
Python内嵌的集合类型有list.tuple.set.dict. 列表list:看似数组,但比数组强大,支持索引.切片.查找.增加等功能. 元组tuple:功能跟list差不多,但一旦生成,长度及 ...
- python集合类型
集合类型简介 集合也是容器,其内元素都是无序.唯一.不可变的.它常用来做成员测试.移除重复数据.数据计算(比如交集.并集.差集). 集合Set是dict的无value版.集合也使用大括号包围: > ...
- python集合类型set
set 类型的简单粗暴取出并集合交集 | & li=[11,22,33] n_li=[44,55] b= (list(set(li)&set(n_li))) b2=set(li) ...
- 《Python核心编程》 第七章 映射和集合类型 - 习题
课后习题 7–1. 字典方法.哪个字典方法可以用来把两个字典合并到一起? 答: dict1 = {' :' python' } dict2 = {' :"hello" } dict ...
- python set type 集合类型的数据介绍 (set frozenset)
python支持数学中的集合概念,如:通过in,not in 可以检查某元素是否在,不在集合中. python有两种集合类型,set(可以变的,不能哈希,不能用作字典的key),frozenset ...
- Python核心编程(第七章)--映像和集合类型
字典:它是一个容器类型,能存储任意个数的Python对象,也包括其他容器类型,Python的字典是作为可变的哈希表实现的 映像类型中的数据是无序排列的 可以用工厂方法dict()来创建字典,也可以 ...
- Python基础-字符串、集合类型、判断、深拷贝与浅拷贝、文件读写
字符串 1.定义三个变量: 2.交换两个变量值 1)引入第三个变量: 2)Python引入第三方变量: 3)不引入第三方变量: 3. isalpha 是否是汉字或字母 4.Isalnum 是否是汉字 ...
- 第二百九十九节,python操作redis缓存-SortSet有序集合类型,可以理解为有序列表
python操作redis缓存-SortSet有序集合类型,可以理解为有序列表 有序集合,在集合的基础上,为每元素排序:元素的排序需要根据另外一个值来进行比较,所以,对于有序集合,每一个元素有两个值, ...
随机推荐
- 学习过程中遇到的python内置函数,后续遇到会继续补充进去
1.python内置函数isinstance(数字,数字类型),判断一个数字的数字类型(int,float,comple).是,返回True,否,返回False2.python内置函数id()可以查看 ...
- 手动安装gitlab-runner
手动安装gitlab-runner 在终端使用命令curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runn ...
- 学习 GitHub 有什么好处?
layout: post title: "学习 GitHub 有什么好处?" date: 2018-04-15 19:20:20 +0800 --- 鸣谢:王顶 老师(河北经贸大学 ...
- linuxprobe培训第1节课笔记2019年7月5日
报了老刘的RHCE培训,这是老刘上课笔记简略版. 老刘在课上介绍了开源共享精神和大胡子(Richard M. Stallman—GNU创始人).linux发展史(Linus Benedict Torv ...
- BZOJ 1085:[SCOI2005]骑士精神(A*算法)
题目链接 题意 中文题意. 思路 首先找到空白的格子,因为空白的格子可以和其他的骑士换.从空白的点开始搜索,每次和其他点交换.因为最多只有十五步,可以做16次搜索,搜索的时候,记录走过的步数和至少剩余 ...
- git简单使用-GitHub
本文描述window下如何使用git工具,操作GitHub远程代码库 一,准备工作: 1,安装git工具,一路默认next安装即可,下载地址 2,注册账号或者创建厂库(已有忽略) 注册账号后,创建仓库 ...
- 性能测试即服务-docker部署jmeter及.netcore应用
前言 现在各种业务都追求上云,通俗的讲,“XX即服务”,作为一名专职的性能测试调优人员的我,由于会点三脚猫的开发功夫,“性能测试即服务”这种开发大任就落到我头上了,先做一个能完成核心压测功能的基础版. ...
- 关于关闭WPS锁屏屏保及设置电脑自动关闭显示屏及休眠的分享
最近公司工作的电脑突然自动加上了屏保锁屏,百思不得其解什么时候设置的,谁给设置的,未经用户允许就擅自给用户设置了??? 金山WPS未经用户允许给用户设置了锁屏屏保,而且这个功能非常不好用,按键盘有时候 ...
- 使用react+redux+react-redux+react-router+axios+scss技术栈从0到1开发一个applist应用
先看效果图 github地址 github仓库 在线访问 初始化项目 #创建项目 create-react-app applist #如果没有安装create-react-app的话,先安装 npm ...
- 嵊州D1T3 睡美人航班
嵊州D1T3 睡美人航班 不知不觉中,我对她的爱意已经达到了 n. 是这样子的,第 1 分钟,我对她的爱意值是 (1, 1). 假如当第 x 分钟时我对她的爱意值是 (a, b),那么第 x + 1 ...