分类: Python/Ruby
2009-10-21 18:11:35
Python 语法之集合
2009-10-20
磁针石:xurongzhong#gmail.com
参考资料:
《Python Essential Reference 4th
Edition 2009》
《beginning python from novice to
professional second edition 2008》
*特点:集合是无序的,且没有重复值。成员是固定长度的,set的长度可变,frozenset是固定长度的。它们共同的操作和方法如下:
项目 |
功能 |
len(s) |
|
s.copy() |
|
s.difference(t) |
s-t |
s.intersection(t) |
交集 & |
s.isdisjoint(t) |
没有共同元素返回真 |
s.issubset(t) |
是子集为真 |
s.issuperset(t) |
是父集为真 |
s.symmetric_difference(t) |
只在一个集合的元素 ^ |
s.union(t) |
联合 | |
注意并集(联合)不是使用加号,是使用逻辑的或。
针对set额外的方法
项目 |
功能 |
s.add(item) |
|
s.clear() |
|
s.difference_update(t) |
保留s-t |
s.discard(item) |
同上,不过item是一个整体 |
s.intersection_update(t) |
求交集存于s |
s.pop() |
|
s.remove(item) |
|
s.symmetric_difference_update(t) |
求出只在一个集合的元素存于s |
s.update(t) |
添加t中的元素至s |
s =
set([3,5,9,10]) # Create a set of numbers
t =
set("Hello") # Create a set of unique characters
>>>
s
set([9,
10, 3, 5])
>>>
t
set(['H',
'e', 'l', 'o'])
支持的操作:
a = t |
s # Union of t and s
b = t
& s # Intersection of t and s
c = t –
s # Set difference (items in t, but not in s)
d = t ^
s # Symmetric difference (items in t or s, but not both)
添加:
t.add('x')
# Add a single item
s.update([10,37,42])
# Adds multiple items to s
移除:
t.remove('H')
>>> set(range(10))
set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> set([0, 1, 2, 3, 0, 1, 2, 3, 4,
5])
set([0, 1, 2, 3, 4, 5])
>>> set(['fee', 'fie', 'foe'])
set(['foe', 'fee', 'fie'])
>>> a = set([1, 2, 3])
>>> b = set([2, 3, 4])
>>> a.union(b)
set([1, 2, 3, 4])
>>> a | b
set([1, 2, 3, 4])
>>> c = a & b
>>> c.issubset(a)
True
>>> c <= a
True
>>> c.issuperset(a)
False
>>> c >= a
False
>>> a.intersection(b)
set([2, 3])
>>> a & b
set([2, 3])
>>> a.difference(b)
set([1])
>>> a - b
set([1])
>>> a.symmetric_difference(b)
set([1, 4])
>>> a ^ b
set([1, 4])
>>> a.copy()
set([1, 2, 3])
>>> a.copy() is a
False
>>> mySets = []
>>> for i in range(10):
... mySets.append(set(range(i,i+5)))
...
>>> reduce(set.union, mySets)
set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
12, 13])
>>> a = set()
>>> b = set()
>>> a.add(b)
Traceback (most recent call last):
File "
TypeError: set objects are unhashable
>>> a.add(frozenset(b))
多用于一个集合作为另外一个集合的成员或者字典的key。
更多参考:()