集合类型(set)
1. 集合介绍
由不同元素组成的集合,集合中是一组无序排列的可hash值,可以作为字典的key
1.1 定义方式
1 2 3 4 5 6 7 8 9
|
>>> set([iterable])
>>> set1 = set('yang') >>> print(set1)
{'yang'}
|
★2. 常用集合方法
2.1 交集、并集、差集、对称差集
语法说明
交集
set1 & set2
并集
set1 | set2
差集
set1 - set2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| >>> set1 = set(['A','B','C','D','1']) >>> set2 = set(['1','2','3','4','A'])
>>> set1 & set2 {'A', '1'}
>>> set1 | set2 {'3', 'D', 'C', '4', 'A', '1', 'B', '2'}
>>> set1 - set2 {'D', 'B', 'C'}
>>> set1 ^ set2 {'D', 'C', '4', '3', 'B', '2'}
|
2.2 添加元素
语法说明
添加一项元素
set1.add()
添加多项元素
set1.update()
1 2 3 4 5 6 7 8 9 10 11 12
| >>> set1 = set(['A','B','C','D','1']) >>> set2 = set(['1','2','3','4','A'])
>>> set1.add('E') >>> set1 {'E', 'D', 'C', 'A', '1', 'B'}
>>> set1.update(['2','3','4']) >>> set1 {'3', 'D', 'C', '4', 'A', '1', 'B', '2'}
|
2.3 删除元素
语法说明
删除元素
set1.remove()
1 2 3 4 5 6 7
| >>> set1 = set(['A','B','C','D','1']) >>> set2 = set(['1','2','3','4','A'])
>>> set1.remove('A') >>> set1 {'D', 'C', '1', 'B'}
|
2.4 集合长度
语法说明
len(set1)
1 2 3 4 5
| >>> set1 = set(['A','B','C','D','1']) >>> set2 = set(['1','2','3','4','A'])
>>> len(set1) 5
|
2.5 判断元素是否是集合成员
语法说明
x in set1(同理 x not in set1判断元素是否不是集合成员)
1 2 3 4 5
| >>> set1 = set(['A','B','C','D','1']) >>> set2 = set(['1','2','3','4','A'])
>>> 'B' in set1 True
|
2.6 判断set1集合中每一个元素都在set2中
语法说明
set1.issubset(set2)
同:set1 <= set2
1 2 3 4 5
| >>> set1 = set(['A','B','C','D','1']) >>> set2 = set(['1','2','3','4','A'])
>>> set1.issubset(set2) False
|
2.7 判断set2集合中的每一个元素都在set1中
语法说明
set1.issuperset(set2)
同:set1 >= set2
1 2 3 4 5
| >>> set1 = set(['A','B','C','D','1']) >>> set2 = set(['1','2','3','4','A'])
>>> set1.issuperset(set2) False
|
2.8 set1和set2的合集,返回包含两集合中的每一个元素的集合
语法说明
set1.union(set2)
同:set1|set2
1 2 3 4 5
| >>> set1 = set(['A','B','C','D','1']) >>> set2 = set(['1','2','3','4','A'])
>>> set1.union(set2) {'3', 'D', 'C', '4', 'A', '1', 'B', '2'}
|
2.9 set1和set2的交集,返回两集合的共同部分
语法说明
set1.intersection(set2)
同:set1 & set2
1 2 3 4 5
| >>> set1 = set(['A','B','C','D','1']) >>> set2 = set(['1','2','3','4','A'])
>>> set1.intersection(set2) {'A', '1'}
|
2.10 set1与set2的差集,返回set1中存在但是set2中不存在的元素
语法说明
set1.difference(set2)
同:set1 - set2
1 2 3 4 5
| >>> set1 = set(['A','B','C','D','1']) >>> set2 = set(['1','2','3','4','A'])
>>> set1.difference(set2) {'D', 'B', 'C'}
|
2.11 set1和set2的对称差集,返回set1与set2中不重复的元素
语法说明
set1.symmetric_difference(set2)
同:set1 ^ set2
1 2 3 4 5
| >>> set1 = set(['A','B','C','D','1']) >>> set2 = set(['1','2','3','4','A'])
>>> set1.symmetric_difference(set2) {'D', 'C', '4', '3', 'B', '2'}
|
2.12 set1浅复制
语法说明
set1.copy()
1 2 3 4 5
| >>> set1 = set(['A','B','C','D','1'])
>>> set3 = set1.copy() >>> set3 {'B', 'D', 'C', 'A', '1'}
|
2.13 不可变集合frozenset
语法说明
frozenset([iterable]])
不可添加、删除元素、可哈希的、能用作字典的键、能做其他集合的元素
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| >>> set1 = set([1, 2, 3, 4]) >>> set1 {1, 2, 3, 4} >>> f_set = frozenset(set1) >>>f_set frozenset({1, 2, 3, 4}) >>>set1.add('a') {1, 2, 3, 4, 'a'}
>>>f_set.add('b') Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'frozenset' object has no attribute 'add'
|
2.14 set应用-去除列表里重复元素
1 2 3 4 5 6 7 8
| >>> list_a = [A,B,C,D,A,B] >>> set_b = set(list_a) >>> set_b set([A,B,C,D]) >>> list_c = [i for i in set_b] >>> list_c [A,B,C,D]
|
参考资料
http://www.iplaypy.com/jichu/set.html
http://www.runoob.com/python/python-func-set.html
http://blog.csdn.net/dragonyangang/article/details/72808992
http://blog.csdn.net/business122/article/details/7541486