Python学习:集合(set)
python的set和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素. 集合对象还支持union(联合), intersection(交), difference(差)和sysmmetric difference(对称差集)等数学运算.sets 支持 x in set, len(set),和 for x in set。作为一个无序的集合,set不记录元素位置或者插入点。因此,sets不支持 indexing, slicing, 或其它类序列(sequence-like)的操作。
>>>x = set('spam')
>>>y = set('ham')
>>>x,y
set(['a', 'p', 's', 'm'])
set(['a', 'h', 'm'])
集合(set)的四大基本操作:
>>>z = x | y #并集
set(['a', 'p', 's', 'h', 'm'])
>>>z = x & y #交集
set(['a', 'm'])
>>>z = x - y #差集,项在x中,不再y中
set(['p', 's'])
>>>z = x ^ y #对称差集,不是x、y共有的
set(['h', 's', 'p'])
其他改变集合的方法intersection(), add(), update(), remove():
>>>x = set('abcde')
>>>y = set('bdxyz')
>>>z = x.intersection(y) #等同于x&y
set(['b', 'd'])
>>>z.add('spam') #插入一个项目
set(['b', 'd', 'spam'])
>>>z.update(set(['X', 'Y'])) #按位置求并集
set(['Y', 'X', 'b', 'd', 'spam'])
>>>z.remove('b') #根据值删除一个项目
set(['Y', 'X', 'd', 'spam'])
set的包含与被包含:>或< 或issubset():
>>>A = set()
>>>B = set(range(-5, 5))
>>>print A.issubset(B)
True
不可变限制和冻结集合:
集合只能包含不可变的(即可散列的)对象类型。因此,列表和字典都不能嵌入到集合中,但是如果你需要存储复合值的话,元组是可以嵌入的。
>>>A = set()
>>>B =
>>>A.add(B) #不能嵌套列表B
TypeError: unhashable type: 'list'
>>>C = (3,4,5,6)
>>>A.add(C) #可以嵌套元组tuple对象
set()
页:
[1]