Chinaunix首页 | 论坛 | 博客
  • 博客访问: 19738141
  • 博文数量: 679
  • 博客积分: 10495
  • 博客等级: 上将
  • 技术积分: 9308
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-18 10:51
文章分类

全部博文(679)

文章存档

2012年(5)

2011年(38)

2010年(86)

2009年(145)

2008年(170)

2007年(165)

2006年(89)

分类: Python/Ruby

2009-10-21 18:11:35

Python 语法之集合

File information

2009-10-20

磁针石:xurongzhong#gmail.com

博客:oychw.cublog.cn

参考资料:

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 "", line 1, in ?

TypeError: set objects are unhashable

>>> a.add(frozenset(b))

多用于一个集合作为另外一个集合的成员或者字典的key

 

 

更多参考:()

 

阅读(1839) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~