Python核心数据类型——集合(Set)
来源:互联网 发布:淘宝吸黑头仪器有用吗 编辑:程序博客网 时间:2024/06/05 15:54
集合是一些唯一的,不可变的对象的一个无序集合,这些对象支持与数学几何理论相对应的操作。
根据定义,一个项在集合中只能出现一次,不管将它添加了多少次。同样,集合有着广泛的应用,尤其是在涉及数字和数据库的工作中。
我们可以看到,一个集合的行为很像一个无值的字典的键,但是,它还支持额外的操作。
根据定义,一个项在集合中只能出现一次,不管将它添加了多少次。同样,集合有着广泛的应用,尤其是在涉及数字和数据库的工作中。
我们可以看到,一个集合的行为很像一个无值的字典的键,但是,它还支持额外的操作。
然而,由于集合是无序的,并且不会把键匹配到值,它们既不是序列也不是映射类型,它们是自成一体的类型。
========================================================================================
要创建一个集合对象,向内置的set函数传递一个序列或其他可迭代的对象:
>>> x = set('abcde')>>> y = set('bdxyz')得到了一个集合对象,其中包含传递的对象的所有元素(注意,集合并不包含位置顺序,序列却包含):
>>> x{'b', 'c', 'd', 'a', 'e'}>>> y{'b', 'd', 'x', 'y', 'z'}集合通过表达式操作符支持一般的数学几何运算。注意,不能再一般序列上应用这些表达式,必须通过序列创建集合后才能使用这些工具。
>>> 'e' in xTrue>>> x - y{'c', 'a', 'e'}>>> x | y{'a', 'b', 'd', 'e', 'x', 'y', 'c', 'z'}>>> x&y{'b', 'd'}>>> x^y #集合对称差:x和y的并集减去交集{'a', 'e', 'x', 'y', 'c', 'z'}>>> x>y # y是否是x的子集False>>> x<y # x是否是y的子集False>>> x == yFalse除了表达式,集合对象还提供了对应这些操作的方法:add方法插入,update是按位置求并集,remove根据值删除一个项目
>>> z = x&y>>> z{'b', 'd'}>>> z.add('SPAM')>>> z{'b', 'SPAM', 'd'}>>> z.update(set(['X','Y']))>>> z{'b', 'SPAM', 'X', 'd', 'Y'}>>> z.remove('b')>>> z{'SPAM', 'X', 'd', 'Y'}作为可迭代的容器,集合也可以用于len、for循环和列表解析这样的操作中。然而,由于它们都是无序的,所以不支持像索引和分片这样的操作:
>>> for item in set('abc'):print(item*3)bbbcccaaa尽管前面介绍的集合表达式通常需要两个集合,它们基于方法的对应形式往往对任何可迭代类型也有效:
>>> S = set([1,2,3])>>> S{1, 2, 3}>>> S |set([3,4]){1, 2, 3, 4}>>> S |([1,4])Traceback (most recent call last): File "<pyshell#30>", line 1, in <module> S |([1,4])TypeError: unsupported operand type(s) for |: 'set' and 'list'>>> S.union(([1,5])){1, 2, 3, 5}>>> S.issubset(range(-5,5))True注意:在python中,{}仍然是一个字典。空的集合必须通过内置函数set来创建,并且以同样方式显示:
>>> S-{1,2,3}set()>>> type({})<class 'dict'>列表和字典不能嵌入到集合中,但是,如果你需要存储复合值的话,元组是可以嵌入的。
========================================================================================
集合解析
>>> {c*4 for c in 'spams'}{'pppp', 'aaaa', 'mmmm', 'ssss'}>>> {x**2 for x in [1,2,3,4]}{16, 1, 9, 4}========================================================================================
为什么使用集合:
集合的用途:例如,由于项在集合中只能存储一次,集合(set)可以用来把重复项从其他集合(collection)中过滤掉。直接把集合(collection)转换为一个集合(set),然后
再转换回来即可:
>>> L = [1,2,1,3,2,4,5]>>> set(L){1, 2, 3, 4, 5}>>> L = list(set(L))>>> L[1, 2, 3, 4, 5]当你遍历图形或其他回环结构的时候,集合可以用来记录已经访问过的位置,必须确保访问过的项不再循环。尽管把访问状态作为键记录到字典中很高效,但集合提供了几乎等同的一种替代方式。
其次,在处理较大的数据集合的时候(例如:数据库查询结果),两个集合的交集包含了两个领域中的共有的对象,并集包含了两个集合的所有项目。
0 0
- Python核心数据类型——集合(Set)
- Python基础——核心数据类型_集合
- python数据类型之初识Set(集合)
- Python——set集合
- 无序集合(set)数据类型
- Redis数据类型--Set(集合)
- Python核心数据类型——数字
- Python核心数据类型——布尔型
- Python核心数据类型——字符串(1)
- Python核心数据类型——字符串(2)
- python:集合(set)
- python 集合(Set)
- python基本数据类型——set
- Python核心编程学习笔记(九)——集合
- python核心编程(七)—字典和集合
- Python学习笔记(五)—集合(set)
- Python(五)set 集合
- Python的集合(Set)
- 搜索引擎关键字智能提示的一种实现
- 验证码 输入框和验证码 对齐。input 和 img 实现对齐
- FragmentManager详解
- 关于eclipse adb的一些问题
- 灰度图像阈值化分割常见方法总结及VC实现
- Python核心数据类型——集合(Set)
- java-oracle数据库连接
- php Linux安装
- centos7中控制节点配置网络
- 【获奖公告】有奖试读—增长黑客
- c#多表连接查询配合case和then使用
- out参数以及使用光标问题
- MySQL自带压力测试工具mysqlslap基本使用
- Android:系统自己附带的图片