赞
踩
集合(set)是一个无序的不重复元素序列
可以使用大括号{}或者set()方法创建集合,但是创建一个空集合必须使用set()不能用{},原因在于{}是用来创建空字典的
set1 = set([1,2,3])
set2 = {1,2,3}
print(set1, set2, sep = '\n')
set3 = set()
set4 = {}
print(type(set3), type(set4), sep = '|')
集合的运算符规则
set1 = {'banana', 'apple', 'watermelon', 'coffee'}
set2 = {'tea', 'coffee', 'sprite', 'apple'}
res1 = 'apple' in set1
print('res1:%s'%res1)
res2 = 'banana' in set2
print('res2:%s'%res2)
set1 = {'banana', 'apple', 'watermelon', 'coffee'}
set2 = {'tea', 'coffee', 'sprite', 'apple'}
res1 = set1 | set2 # set |= other | ... 更新集合,添加来自 others 中的所有元素。
print(' set |= other | ...->%s'%res1)
res2 = set1 - set2 # set -= other | ...更新集合,移除其中也存在于 others 中的元素。
print(' set -= other | ...->%s'%res2)
res3 = set1 & set2 # set &= other & ...更新集合,只保留其中在所有 others 中也存在的元素。
print(' set &= other & ...->%s'%res3)
res4 = set1 ^ set2 # set ^= other 更新集合,只保留存在于集合的一方而非共同存在的元素。
print(' set ^= other ->%s'%res4)
集合的基本操作
1、add(elem)
将元素 elem 添加到集合中。
set1 = {1,2,3,4}
set1.add(6)
print('after use add', set1)
2、update(elem)
将元素 elem 添加到集合中。elem可以是列表、元组、字典等
set1.update(['hello', 'python'])
print('after use update(list)', set1)
set1.update(('something', 'just', 'like', 'this'))
print('after use update(tuple)', set1)
set1.update({'name':'python'})
print('after use update(dict)', set1)
3、remove(elem)
从集合中移除元素 elem。 如果 elem 不存在于集合中则会引发 KeyError。
set1.remove('hello')
print(set1)
set1.remove('what')
print(set1)
4、discard(elem)
如果元素 elem 存在于集合中则将其移除。如果元素不存在,不报错
set1.remove('hello')
print(set1)
set1.discard('what')
print(set1)
5、pop()
从集合中移除并返回任意一个元素。 如果集合为空则会引发 KeyError。
Remove and return an arbitrary set element.
Raises KeyError if the set is empty.
set 集合的 pop 方法会对集合进行无序的排列,然后将这个无序排列集合的左面第一个元素进行删除。
set1.pop()
print('delete elem use pop() %s'%set1)
set1.pop()
print('delete elem use pop() %s'%set1)
set1.pop()
print('delete elem use pop() %s'%set1)
6、clear()
从集合中移除所有元素。
print('before clear:', set1)
set1.clear()
print('after clear:', set1)
非运算符规则
1、isdisjoint(other)
如果集合中没有与 other 共有的元素则返回 True。 当且仅当两个集合的交集为空集合时,两者为不相交集合。
set1 = {1,2,3,4}
set2 = {'hello', 2, 3}
res = set1.isdisjoint(set2)
print('set1 and set2',res)
set3 = {1,2,3,4}
set4 = {5,6,7}
res1 = set3.isdisjoint(set4)
print('set3 and set4', res1)
2、issubset(other)
set <= other
检测是否集合中的每个元素都在 other 之中。
set < other
检测集合是否为 other 的真子集,即 set <= other and set != other。
set3 = {1,2,3,4}
set4 = {1,2,3,4,5,6,7}
res = set3 <= set4
print('set3 <= set4', res)
res = set3 < set4
print('set3 < set4', res)
3、issuperset(other)
set >= other
检测是否 other 中的每个元素都在集合之中。
set > other
检测集合是否为 other 的真超集,即 set >= other and set != other。
set3 = {1,2,3,4}
set4 = {1,2,3,4,5,6,7}
res = set3 >= set4
print('set3 >= set4', res)
res = set3 > set4
print('set3 > set4', res)
4、union(*others)
set | other | …
返回一个新集合,其中包含来自原集合以及 others 指定的所有集合中的元素。
set3 = {1, 2, 3, 4}
set4 = {5, 6, 7, 2}
res = set3.union(set4)
print('use union', res)
5、intersection(*others)
set & other & …
返回一个新集合,其中包含原集合以及 others 指定的所有集合中共有的元素。
set3 = {1, 2, 3, 4}
set4 = {5, 6, 7, 2}
res = set3.intersection(set4)
print('use intersection', res)
6、difference(*others)
set - other - …
返回一个新集合,其中包含原集合中在 others 指定的其他集合中不存在的元素。
set3 = {1, 2, 3, 4}
set4 = {5, 6, 7, 2}
res = set3.difference(set4)
print('use difference', res)
7、symmetric_difference(other)
set ^ other
返回一个新集合,其中的元素或属于原集合或属于 other 指定的其他集合,但不能同时属于两者。
set3 = {1, 2, 3, 4}
set4 = {5, 6, 7, 2}
res = set3.symmetric_difference(set4)
print('use symmetric_difference', res)
非运算符版本的 union(), intersection(), difference(),以及 symmetric_difference(), issubset() 和 issuperset() 方法会接受任意可迭代对象作为参数。 相比之下,它们所对应的运算符版本则要求其参数为集合。 这就排除了容易出错的构造形式例如 set(‘abc’) & ‘cbs’,而推荐可读性更强的 set(‘abc’).intersection(‘cbs’)。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。