[Python入门及进阶笔记]Python-基础-集合小结
2013-03-10 19:43
821 查看
博客迁往:新地址 (点击直达)
新博客使用markdown维护,线下有版本库,自己写的所以会定时更新同步,同时提供更好的导航和阅读体验
csdn对markdown支持不好,所以旧版不会花时间进行同步修订,抱歉
----------------------
集合
简介
python的set和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素.sets 支持 x in set, len(set), 和 for x in set。
集合对象还支持union(联合), intersection(交), difference(差)和sysmmetric difference(对称差集)等数学运算.
作为一个无序的集合,sets 不记录元素位置或者插入点。因此,sets 不支持 indexing, slicing, 或其它类序列(sequence-like)的操作。
set为可变集合
frozenset为固定集合
可变集合特有的方法: add, remove, discard, pop, clear, 这些接受对象的方法, 参数必须是可哈希的
声明
用集合的工厂方法 set()和 frozenset():set
>>> s = set('cheeseshop') >>> s set(['c', 'e', 'h', 'o', 'p', 's'])
frozenset
>>> b = frozenset([1,2,3,2]) >>> b frozenset([1, 2, 3]) >>> b.add(4) Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'frozenset' object has no attribute 'add'
Set 和 ImmutableSet
字符串->字符集
>>> set('hello') set(['h', 'e', 'l', 'o'])
列表/元组->集合
>>> set([1,2,3,2,1]) set([1, 2, 3]) >>> set((1,2,3,2,1)) set([1, 2, 3])
甚至是 字典->集合
>>> a = {'name':'tom','age':22,'score':22} >>> set(a) set(['age', 'score', 'name'])
常用操作
成员关系
>>> h = set('hello') >>> h set(['h', 'e', 'l', 'o']) >>> 'l' in h True >>> 'l' not in h False
新增删除
新增单个元素s.add(x)向 set “s”中增加元素 x
>>> a = set([1,2,3,4,2]) >>> a set([1, 2, 3, 4]) >>> a.add(2) >>> a set([1, 2, 3, 4]) >>> a.add(5) >>> a set([1, 2, 3, 4, 5])
新增多个元素
s.update(t)
s |= t
>>> a = set([1,2,3]) >>> b = set([2,3,4]) >>> a.update(b) >>> a set([1, 2, 3, 4]) >>> b set([2, 3, 4])
删除
s.remove(x)
从 set “s”中删除元素 x, 如果不存在则引发 KeyError
>>> a set([1, 2, 3, 4, 5]) >>> a.remove(4) >>> a set([1, 2, 3, 5]) >>> a.remove(4) Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 4
s.discard(x)
如果在 set “s”中存在元素 x, 则删除
>>> a set([1, 2, 3, 5]) >>> a.discard(3) >>> a set([1, 2, 5]) >>> a.discard(3) >>> a set([1, 2, 5])
s.pop()
删除并且返回 set “s”中的一个不确定的元素, 如果为空则引发 KeyError
>>> a set([1, 5]) >>> a.pop() 1 >>> a.pop() 5 >>> a.pop() Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'pop from an empty set'
s.clear()
删除 set “s”中的所有元素
>>> a set([1, 2, 3, 4]) >>> a.clear() >>> a set([]) >>> b = set([1,2,3]) >>> del b
集合间操作
注意,集合操作可以通过函数进行,也存在等价的运算符1.交集
s.union(t) 等价 s | t
返回一个新的 set 包含 s 和 t 中的每一个元素
2.并集
s.intersection(t) 等价 s & t
返回一个新的 set 包含 s 和 t 中的公共元素
3.差集
s.difference(t) 等价 s - t
返回一个新的 set 包含 s 中有但是 t 中没有的元素
4.差分集
s.symmetric_difference(t) 等价 s ^ t
返回一个新的 set 包含 s 和 t 中不重复的元素
>>> a = set([1,2,3]) >>> b = set([2,3,4]) >>> a.symmetric_difference(b) set([1, 4])
5.关系判断
s.issubset(t) 等价 s <= t
测试是否 s 中的每一个元素都在 t 中
s.issuperset(t) 等价 s >= t
测试是否 t 中的每一个元素都在 s 中
6.浅拷贝
>>> a set([1, 2, 3]) >>> b = a.copy() >>> b set([1, 2, 3])
其他
1.用的较少的函数s.intersection_update(t) 等价 s &= t
返回只保留含有 set “t”中元素的 set “s”
s.difference_update(t) 等价 s -= t
返回删除了 set “t”中含有的元素后的 set “s”
s.symmetric_difference_update(t) 等价 s ^= t
返回含有 set “t”或者 set “s”中有而不是两者都有的元素的 set “s”
The end!
To be continue
wklken
Email: wklken@yeah.net
Blog: http://blog.csdn.net/wklken
2013-03-10
转载请注明出处,谢谢
相关文章推荐
- [Python入门及进阶笔记]Python-基础-集合小结
- [Python入门及进阶笔记]Python-基础-函数小结
- [Python入门及进阶笔记]Python-基础-字典小结
- [Python入门及进阶笔记]Python-基础-列表及列表解析小结
- [Python入门及进阶笔记]Python-基础-字典小结
- [Python入门及进阶笔记]Python-基础-文件处理小结
- [Python入门及进阶笔记]Python-基础-元组小结
- [Python入门及进阶笔记]Python-基础-字符串小结
- [Python入门及进阶笔记]Python-基础-函数小结
- [Python入门及进阶笔记]Python-基础-元组小结
- [Python入门及进阶笔记]Python-基础-列表及列表解析小结
- [Python入门及进阶笔记]Python-基础-列表及列表解析小结
- [Python入门及进阶笔记]Python-基础-字符串小结
- [Python入门及进阶笔记]Python-基础-内置函数小结
- [Python入门及进阶笔记]Python-基础-文件处理小结
- [Python入门及进阶笔记]Python-基础-内置函数小结
- [Python入门及进阶笔记]Python-基础-内置函数小结
- [Python入门及进阶笔记]Python-基础-数字小结
- [Python入门及进阶笔记]Python-基础-数字小结
- [Python入门及进阶笔记]Python-魔术方法小结(方法运算符重载)