码迷,mamicode.com
首页 > 编程语言 > 详细

Python set 集合

时间:2016-01-25 19:13:49      阅读:304      评论:0      收藏:0      [点我收藏+]

标签:

简介

  python的set和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素. 集合对象还支持union(联 合), intersection(交), difference(差)和sysmmetric difference(对称差集)等数学运算.

创建集合

1 >>> S1 = set(spiritman)
2 >>> print S1
3 set([a, i, m, n, p, s, r, t])

集合常用操作及实例展示

  可以使用dir(set)查看集合支持的操作方法

add

 1 功能:增加一个元素到集合。当集合存在该元素时,该语句不生效
 2      Add an element to a set.This has no effect if the element is already present.
 3 语法:S.add(object)
 4 实例展示:
 5 >>> S1 = set(spirit)
 6 >>> print S1
 7 set([i, p, s, r, t])
 8 >>> S1.add(a)
 9 >>> print S1
10 set([a, i, p, s, r, t])
11 >>> S1.add(a)
12 >>> print S1   
13 set([a, i, p, s, r, t])  

clear

 1 功能:清空集合
 2      Remove all elements from this set.
 3 语法:S.clear()
 4 实例展示:
 5 >>>S1 = set(spirit)
 6 >>> print S1
 7 set([i, p, s, r, t])
 8 >>> S1.clear()
 9 >>> print S1      
10 set([])

copy

 1 功能:浅复制集合,返回一个新的集合。
 2      Return a shallow copy of a set.
 3 语法:S.copy()
 4 实例展示:
 5 >>> S1 = set(spirit)
 6 >>> print S1
 7 set([i, p, s, r, t])
 8 >>> S2 = S1.copy()
 9 >>> print S2
10 set([i, p, s, r, t])
11 >>> id(S2)
12 140239642434120
13 >>> print S1
14 set([i, p, s, r, t])
15 >>> id(S1)
16 140239644667136

difference

 1 功能:找出两个或多个集合中的不同元素,结果返回一个新的集合
 2      Return the difference of two or more sets as a new set.(all elements that are in this set but not the others.)
 3 语法:S.differencce(set1,set2.....)
 4 实例展示:
 5 >>> S1 = set(spirita) 
 6 >>> print S1           
 7 set([a, i, p, s, r, t])
 8 >>> S2 = set(spiri)   
 9 >>> print S2           
10 set([i, p, s, r])
11 >>> S3 = set(liush) 
12 >>> print S3
13 set([i, h, s, u, l])
14 ##################################################
15 #找出S1和S2中的不同元素,结果返回一个新的集合
16 >>> S1.difference(S2)
17 set([a, t])
18 ##################################################
19 #找出S1和S3中的不同元素,结果返回一个新的集合
20 >>> S1.difference(S3)
21 set([a, p, r, t])
22 ##################################################
23 #找出S1、S2和S3中的不同元素,结果返回一个新的集合
24 >>> S1.difference(S2,S3)
25 set([a, t])

difference_update

 1 功能:删除集合S中所有跟S1中相同的元素。无相同元素时,各个集合不会发生改变。
 2      Remove all elements of another set from this set.
 3 语法:S.difference_update(S1)
 4 实例展示:
 5 >>> S1 = set(spirit) 
 6 >>> print S1
 7 set([i, p, s, r, t])     
 8 >>> S2 = set(abcde)       
 9 >>> print S2
10 set([a, c, b, e, d])
11 >>> S3 = set(spiritman)  
12 >>> print S3
13 set([a, i, m, n, p, s, r, t])
14 >>> S1.difference_update(S2)
15 >>> print S1
16 set([i, p, s, r, t])
17 >>> print S2
18 set([a, c, b, e, d])
19 >>> S1.difference_update(S3)
20 >>> print S1                
21 set([])
22 >>> print S3
23 set([a, i, m, n, p, s, r, t])
24 >>> S2.difference_update(S3)
25 >>> print S2
26 set([c, b, e, d])
27 >>> print S3                
28 set([a, i, m, n, p, s, r, t])

discard

 1 功能:从集合中删除一个元素。一次只能删除一个。
 2     Remove an element from a set if it is a member.
 3 语法:S.discard(object)
 4 实例展示:
 5 S3 = set(spiritman)
 6 >>> print S3
 7 set([a, i, m, n, p, s, r, t])
 8 >>> S3.discard(a)
 9 >>> print S3       
10 set([i, m, n, p, s, r, t])
11 ####################################################
12 #删除多个元素时报错
13  >>>S3.discard(i,m)
14 Traceback (most recent call last):
15   File "<stdin>", line 1, in <module>
16 TypeError: discard() takes exactly one argument (2 given)

intersection

 1 功能:求两个或多个集合的交集,交集返回一个新的集合。
 2     Return the intersection of two or more sets as a new set.(elements that are common to all of the sets.)
 3 语法:S.intersection(set1,set2...)
 4 实例展示:
 5 >>> S1 = set(spirit)      
 6 >>> print S1
 7 set([i, p, s, r, t])
 8 >>> S2 = set(spiman) 
 9 >>> print S2
10 set([a, i, m, n, p, s])
11 >>> S3 = set(abcis)  
12 >>> print S3
13 set([a, i, c, b, s])
14 ##################################################
15 #求S1和S2的交集
16 >>> S1.intersection(S2)
17 set([i, p, s])
18 ##################################################
19 #求S1和S3的交集
20 >>> S1.intersection(S3)
21 set([i, s])
22 ##################################################
23 #求S1、S2和S3的交集
24 >>> S1.intersection(S2,S3)
25 set([i, s])

intersection_update

 1 功能: 以一个集合和另一个集合的交集更新该集合。
 2      Update a set with the intersection of itself and another.
 3 语法:S.intersection_update(set1)
 4 实例展示:
 5 >>> S1 = set(spirit)
 6 >>> print S1
 7 set([i, p, s, r, t])   
 8 >>> S2 = set(spiman)
 9 >>> print S2
10 set([a, i, m, n, p, s])
11 >>> S3 = set(abcis)
12 >>> print S3
13 set([a, i, c, b, s])
14 ##################################################
15 #以S1和S3的交集更新S1
16 >>> S1.intersection_update(S3) 
17 >>> print S1
18 set([i, s])
19 ##################################################
20 #以S2和S3的交集更新S2
21 >>> S2.intersection_update(S3)
22 >>> print S2
23 set([a, i, s])

isdisjoint

 1 功能:判断两个集合是否有集合。若没有则返回True;反之False。
 2      Return True if two sets have a null intersection.
 3 语法:S.isdisjoint(set1)
 4 实例展示:
 5 >>> S1 = set(spirit)
 6 >>> print S1
 7 set([i, p, s, r, t])   
 8 >>> S2 = set(spiman)
 9 >>> print S2
10 set([a, i, m, n, p, s])
11 >>> S3 = set(abcdef)
12 >>> print S3
13 set([a, c, b, e, d, f])
14 ####################################################
15 >>> S1.isdisjoint(S2)
16 False
17 >>> S1.isdisjoint(S3)
18 True
19 >>> S2.isdisjoint(S3)
20 False

issubset

 1 功能:判断集合是否是另一个集合的子集合。是则返回True;反之False.
 2     Report whether another set contains this set.
 3 语法:S.issubset(set1)
 4 实例展示:
 5 >>> S1 = set(spirit)   
 6 >>> print S1
 7 set([i, p, s, r, t])
 8 >>> S2 = set(spiritman)
 9 >>> print S2
10 set([a, i, m, n, p, s, r, t])
11 >>> S3 = set(abcis)
12 >>> print S3
13 set([a, i, c, b, s])
14 ##################################################
15 >>> S1.issubset(S2)
16 True
17 >>> S3.issubset(S2)
18 False
19 >>> S1.issubset(S3)
20 False

issuperset

 1 功能:判断集合是否包含另一个集合。
 2     Report whether this set contains another set
 3 语法:issuperset(set1)
 4 实例展示:
 5 >>> S1 = set(spiritman)
 6 >>> print S1
 7 set([a, i, m, n, p, s, r, t])
 8 >>> S2 = set(spirit)   
 9 >>> print S2
10 set([i, p, s, r, t])
11 >>> S1.issuperset(S2)
12 True

pop

 1 功能:删除并返回任意一个元素。
 2    Remove and return an arbitrary set element.Raises KeyError if the set is empty.
 3 语法:S.pop()
 4 实例展示:
 5 >>> S1 = set(spiritman)
 6 >>> print S1
 7 set([a, i, m, n, p, s, r, t])
 8 
 9 >>> S1.pop()   
10 a
11 >>> S1.pop()
12 i
13 >>> S1.pop()
14 m
15 >>> print S1
16 set([n, p, s, r, t])

remove

 1 功能:删除集合中一个指定的元素。
 2     Remove an element from a set; it must be a member.If the element is not a member, raise a KeyError
 3 语法:S.remove(object)
 4 实例展示:
 5 >>> S1 = set(spiritman)
 6 >>> print S1
 7 set([a, i, m, n, p, s, r, t])
 8 >>> S1.remove(n)
 9 >>> print S1
10 set([a, i, m, p, s, r, t])
11 >>> S1.remove(b)
12 Traceback (most recent call last):
13   File "<stdin>", line 1, in <module>
14 KeyError: b

symmetric_difference

 1 功能:取两个集合的差集,返回一个新集合。
 2 Return the symmetric difference of two sets as a new set.(all elements that are in exactly one of the sets.)
 3 语法:S.symmetric_difference(set1)
 4 实例展示:
 5 >>> S1 = set(spiritman)      
 6 >>> print S1
 7 set([a, i, m, n, p, s, r, t])
 8 >>> S2 = set(spirit)         
 9 >>> print S2
10 set([i, p, s, r, t])
11 >>> S3 = set(bcde)           
12 >>> print S3
13 set([c, b, e, d])
14 ##################################################
15 #返回S1和S2差集
16 >>> S1.symmetric_difference(S2)
17 set([a, m, n])
18 ##################################################
19 #返回S1和S3差集
20 >>> S1.symmetric_difference(S3)
21 set([a, c, b, e, d, i, m, n, p, s, r, t])
22 ##################################################
23 #返回S2和S3差集
24 >>> S2.symmetric_difference(S3)
25 set([c, b, e, d, i, p, s, r, t])

symmetric_difference_update

 1 功能:取集合和另一个集合的差集,更新该集合。
 2 Update a set with the symmetric difference of itself and another.
 3 语法:symmetric_difference_update(set1)
 4 实例展示:
 5 >>> S1 = set(spiritman)      
 6 >>> print S1
 7 set([a, i, m, n, p, s, r, t])
 8 >>> S2 = set(spirit)         
 9 >>> print S2
10 set([i, p, s, r, t])
11 >>> S3 = set(bcde)           
12 >>> print S3
13 set([c, b, e, d])
14 ####################################################
15 >>> S1.symmetric_difference_update(S2)
16 >>> print S1
17 set([a, m, n])
18 
19 >>> S2.symmetric_difference_update(S3)
20 >>> print S2
21 set([c, b, e, d, i, p, s, r, t])

union

 1 功能:取多个集合的并集,返回一个新的集合。
   Return the union of sets as a new set.(all elements that are in either set.)
2 语法:S.union(set1,set2....) 3 实例展示: 4 >>> S1 = set(spiritman) 5 >>> print S1 6 set([a, i, m, n, p, s, r, t]) 7 >>> S2 = set(spirit) 8 >>> print S2 9 set([i, p, s, r, t]) 10 >>> S3 = set(bcde) 11 >>> print S3 12 set([c, b, e, d]) 13 ################################################## 14 #返回S1和S2的并集 15 >>> S1.union(S2) 16 set([a, i, m, n, p, s, r, t]) 17 ################################################## 18 #返回S1和S3的并集 19 >>> S1.union(S3) 20 set([a, c, b, e, d, i, m, n, p, s, r, t]) 21 ################################################# 22 #返回S1、S2和S3的并集 23 >>> S1.union(S2,S3) 24 set([a, c, b, e, d, i, m, n, p, s, r, t])

update

 1 功能:取一个集合和另一个集合的并集,更新该集合。
 2     Update a set with the union of itself and others.
 3 语法:S.update(set1)
 4 实例展示:
 5 >>> S1 = set(spiritman)
 6 >>> print S1
 7 set([a, i, m, n, p, s, r, t])
 8 >>> S3 = set(bcde) 
 9 >>> print S3
10 set([c, b, e, d])
11 >>> S1.update(S3)
12 >>> print S1
13 set([a, c, b, e, d, i, m, n, p, s, r, t])

Python set 集合

标签:

原文地址:http://www.cnblogs.com/spiritman/p/5157969.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!