python2.5中新增加了集合内容,让我想起了初中数学。
看看: >>> b = set() >>> b.add(1) >>> b.add(2) >>> b.add(3) >>> b.add(4) >>>
>>> c = set() >>> c.add(4) >>> c.add(5) >>> c.add(6)
>>> d = b.difference(c) >>> print d set([1, 2, 3]) >>> print b set([1, 2, 3, 4]) >>> print c set([4, 5, 6])
>>> d = b.intersection(c) >>> print d set([4]) >>> d = b.union(c) >>> print d set([1, 2, 3, 4, 5, 6])
difference求b与c不同的部分,intersection求b和c的交集,union求b和c的并集。 其实集合类型这里还有一个好处,它的值不会重复,就像字典类型的key一样。 >>> a = set() >>> a.add(1) >>> a.add(2) >>> a.add(3) >>> a.add(2) >>> a.add(1) >>> print a set([1, 2, 3]) 上面就能看出来了。用它来排重很好用。
下边介绍一些集合常用的方法和函数,便于以后查阅
方法名称 操作
s.issubset(t) 如果s 是t 的子集,则返回True,否则返回False
s.issuperset(t) 如果t 是s 的超集,则返回True,否则返回False
s.union(t) 返回一个新集合,该集合是s 和t 的并集
s.intersection(t) 返回一个新集合,该集合是s 和t 的交集
Edit By Vheavens
Edit By Vheavens
s.difference(t) 返回一个新集合,该集合是s 的成员,但不是t 的成员
s.symmetric_difference(t) 返回一个新集合,该集合是s 或t 的成员,但不是s 和t 共有的
成员
s.copy() 返回一个新集合,它是集合s 的浅复制
新的方法有 add(), remove(), discard(), pop(), clear(). 这些接受对象的方法,参数必
须是可哈希的。
表 7.5 可变集合类型的方法
方法名 操作
s.update(t) 用t 中的元素修改s, 即,s 现在包含s 或t 的成员
s.intersection_update(t) s 中的成员是共同属于s 和t 的元素。
s.difference_update(t) s 中的成员是属于s 但不包含在t 中的元素
s.symmetric_difference_update(t) s 中的成员更新为那些包含在s 或t 中,但不 是s
和t 共有的元素
s.add(obj) 在集合s 中添加对象obj
s.remove(obj) 从集合s 中删除对象obj;如果obj 不是集合s 中的元素(obj not
in s),将引发KeyError 错误
s.discard(obj) 如果obj 是集合s 中的元素,从集合s 中删除对象obj;
s.pop() 删除集合s 中的任意一个对象,并返回它
s.clear() 删除集合s 中的所有元素
len(s) 集合基数: 集合s 中元素的个数
set([obj]) 可变集合工厂函数; obj 必须是支持迭代的,由obj 中
的元素创建集合,否则创建一个空集合
frozenset([obj]) 不可变集合工厂函数; 执行方式和set()方法相同,
但它返回的是不可变集合
obj in s 成员测试:obj 是s 中的一个元素吗?
obj not in s 非成员测试:obj 不是s 中的一个元素吗?
s == t 等价测试: 测试s 和t 是否具有相同的元素?
s != t 不等价测试: 与==相反
s < t (严格意义上)子集测试; s != t 而且s 中 所 有
的元素都是t 的成员
s.issubset(t) s <= t 子集测试(允许不严格意义上的子集): s 中所有的元素
都是t 的成员
s > t (严格意义上)超集测试: s != t 而且t 中所有的元素
都是s 的成员
s.issuperset(t) s >= t 超集测试(允许不严格意义上的超集): t 中所有的元素
都是s 的成员
s.union(t) s | t 合并操作:s 或t 中的元素
s.intersec- tion(t) s & t 交集操作:s 和t 中的元素
s.difference(t) s - t 差分操作: s 中的元素,而不是t 中的元素
s.symmetric_difference(t)s ^ t 对称差分操作:s 或t 中的元素,但不是s 和t 共有
的元素
s.copy() 复制操作:返回s 的(浅复制)副本
Table 7.6 集合类型,函数和方法(继续)
Edit By Vheavens
Edit By Vheavens
函数/方法名字 操作符 等价描述
仅用于可变集合
s.update(t) s |= t (Union) 修改操作: 将t 中的成员添加s
s.intersection_update(t) s &= t 交集修改操作: s 中仅包括s 和t 中共有的成员
s.difference_update(t) s -= t 差修改操作: s 中包括仅属于s 但不属于t 的成员
s.symmetric_
difference_
update(t) s ^= t 对称差分修改操作: s 中包括仅属于s 或仅属于t 的
成员
s.add(obj) 加操作: 将obj 添加到s
s.remove(obj) 删除操作: 将obj 从s 中删除;如果s 中不存在
obj,将引发KeyError
s.discard(obj) 丢弃操作: remove() 的 友 好 版 本 - 如
果 s 中存在obj,
从s 中删除它
s.pop() Pop 操作: 移除并返回s 中的任意一个元素
s.clear() 清除操作: 移除s 中的所有元素