Python学习笔记之集合类型(set, frozeset)
来源:互联网 发布:极乐宿舍使用软件 编辑:程序博客网 时间:2024/06/03 16:16
- 集合对象是一组无序排列的可哈希的值,集合成员可以做字典的键。
- 集合有两种类型,可变集合(set)和不可变集合(frozenset)
创建集合类型
工厂方法 set(), frozenset()
>>> s = set('hello')
>>> sset(['h', 'e', 'l', 'o'])
>>> t = frozenset(['12345678', 100])
>>> tfrozenset(['12345678', 100])
集合类型操作符
- 成员关系(in, not in)
判定耨个元素是否是一个集合中的成员。(*不使用与集合的子集和超集,使用<,>)
- 集合等价/不等价(==, !=)
当且仅当其中两个集合的成员相同,被用于相同或不同的集合之间做比较。
- 子集/超集(<, <=, >, >=)
检查集合是否是其他集合的超集或子集
>>> set('abcd') < frozenset('abcde123')
True "<, >"等是判断集合的超集和子集,而不是通常的大于和小于,所以以下都为False
>>> set('abcd') < set('abce123')
False
>>> set('abcd') < set('abce123')
False
>>> set('abcd') > set('abce123')
False
>>> s |f
set(['a', 'c', 'b', 'd', '1', '3', '2', '4']) #结果和s的类型相同,即Set
>>> f|s
frozenset(['a', 'c', 'b', 'd', '1', '3', '2', '4']) #结果和f的类型相同,即frozenset
False
- 联合(|),等价方法union()
- 交集(&),等价方法intersection()
- 差补/相对集合(-),等价方法difference()
- 对称查分(^),等价方法symmetric_difference(),只不能同时属于两个集合的元素
- 混合集合类型,集合操作结果的类型同左边的集合类型
>>> s = set('abcd')
>>> f = frozenset('1234')>>> s |f
set(['a', 'c', 'b', 'd', '1', '3', '2', '4']) #结果和s的类型相同,即Set
>>> f|s
frozenset(['a', 'c', 'b', 'd', '1', '3', '2', '4']) #结果和f的类型相同,即frozenset
只用于可变集合(set)的操作符
- (Union) Update ( |= ), 等同于update()
- 保留/交集更新( &= ),等同于intersection_update()
- 差更新( -= ),等同于difference_update()
- 对称差分更新( ^= ),等同于symmetric_difference_update()
标准函数
len()
set(), frozenset()
集合的内建方法(set,frozenset)
- issubset(t),是否是给定集合t的子集
- issuperset(t),是否是给定集合t的超集
- union(t)
- intersection(t)
- difference(t)
- symmetric_difference(t)
- copy(t),浅复制
只用于可变集合的方法(set)
- s.update(t),将集合t添加到集合s中,即s现在包含s或t的成员
- s.intersection_udpate(t),s中的成员共同属于s和t的元素
- s.difference_update(t),s中的成员属于s但不包含在t中的元素
- s.symmetric_differrence_update(s),s中的成员更新为包含在s或t中,但不是s和t的共有元素
- s.add()
- s.remove(),从集合s中删除对象obj,如obj不是集合s中的元素,引发KeyError错误
- s.discard(),如obj是集合s中的元素,这从s中删除对象obj,如obj不是集合s中的元素,也不会引发错误。
- s.pop(),删除集合s中的任意一个对象,并返回它
- s.clear()
操作符和内建方法的比较
当用操作符时,操作符两边的操作数必须是集合
使用内建方法时,对象可以是迭代类型
>>> s = set('abcd')>>> s2 = set('xyz')>>> s |= s2 # s, s2都是set, "|="操作OK>>> sset(['a', 'c', 'b', 'd', 'y', 'x', 'z'])>>> l = [1,2,3,4]
>>> s |= l #l为list类型, 出现异常Traceback (most recent call last):
File "<pyshell#27>", line 1, in <module>
s |= l
TypeError: unsupported operand type(s) for |=: 'set' and 'list'>>> s.update(l) #内建方法update, 可以使用list等迭代类型
>>> s
set([1, 2, 3, 4, 'a', 'c', 'b', 'd', 'y', 'x', 'z'])
- Python学习笔记之集合类型(set, frozeset)
- Python学习笔记之集合set
- python 学习笔记——set() class 集合类型
- Python学习笔记--集合set
- Redis学习笔记之六:集合类型Set
- Python学习之set()集合
- Python学习20:集合类型(set)
- Python学习笔记 - 10.集合(Set)
- python学习笔记(五)集合(set)
- Python 中的 集合类型 --- set
- Python之集合(set)
- python之集合学习笔记
- Python学习笔记3:集合类型
- [学习笔记]Java集合框架之Set集合
- [学习笔记]Java集合框架之Set集合
- Redis之Set 集合类型
- Python学习笔记之dict、set
- Python学习笔记:集合(set)基本内容
- SQL 2008 SP2 找不到SQL Server Engine
- C#利用广播实现群发功能
- DevExpress的gridView导出Excel
- 32位和64位系统区别及int字节数
- 如何让IOS应用从容地崩溃
- Python学习笔记之集合类型(set, frozeset)
- Tomcat 下Web项目的定时任务
- asihttprequest
- 【C++泛型编程】基于策略(Policy)的类设计
- xCode 4.X 免证书真机公布及调试
- Activity生命周期理解之一 启动一个Activity
- 常见Js复制代码
- Spring 声明式事务,propagation属性列表
- request.getParameter()和request.getAttribute()