
























本文简单介绍了Python语言里set类型自带的方法,set类型表示元素和集合的从属关系(membership),和列表等序列相比,最大的特点是无序。可以跟数学里的集合概念完全对应起来。
数学里的集合概念,在Python语言里对应的是set类型。与list,tuple不同的地方是,set更加强调的是一种"从属关系"(membership),跟顺序无关,所以有重复的元素会先排除。
>>> set([1, 1, 1, 1, 2, 3])
set([1, 2, 3]) #重复元素被排除
>>> set([3, 2, 1])
set([1, 2, 3]) #无序的集合
>>>
花括号用来创建set类型的变量,这与字典很类似,只是缺少了value,后面会逐渐发现,set类型和字典的key有一些类似之处,比如:无序、不可重复、必须是hashable的,所以用花括号表示,是理所当然的。
set类型还有一种标准的表示法是 set([…]) ,例如
>>> {'a','b'}
set(['a', 'b'])
>>>
set类型有内置函数add用来给set添加元素
>>> A = {'a','b'}
>>> A.add('c')
>>> A
set(['a', 'c', 'b'])
>>>
set类型有四个内置update函数用来给set添加元素,对应于Python 的集合运算中的4种运算
与add类似,只是添加的不是单个元素,而且另一个集合,这和字典的update函数功能非常相似。最后的结果是两个集合的并集
>>> A = {'a','b'}
>>> A.update({'c', 'd'}) #iterable的参数都可以传递
>>> A
set(['a', 'c', 'b', 'd'])
>>>
另一种写法是:|=
>>> A = {'a','b'}
>>> A |= {'c', 'd'}
>>> A
set(['a', 'c', 'b', 'd'])
>>>
内置函数intersection_update返回的结果是两个集合的交集
>>> A = {'a','b'}
>>> A.intersection_update({'b', 'd'}) #iterable的参数都可以传递
>>> A
set(['b'])
>>>
另一种写法是 &=
>>> A = {'a','b'}
>>> A &= {'b', 'd'}
>>> A
set(['b'])
>>>
内置函数difference_update返回的结果是两个集合的差集
>>> A = {'a','b'}
>>> A.difference_update({'b', 'd'}) #iterable的参数都可以传递
>>> A
set(['a'])
>>>
另一种写法是 -=
>>> A = {'a','b'}
>>> A -= {'b', 'd'}
>>> A
set(['a'])
>>>
内置函数symmetric_difference_update返回的结果是两个集合的对称差集
>>> A = {'a','b'}
>>> A.symmetric_difference_update({'b', 'd'}) #iterable的参数都可以传递
>>> A
set(['a', 'd'])
>>>
另一种写法是 ^=
>>> A = {'a','b'}
>>> A ^= {'b', 'd'}
>>> A
set(['a', 'd'])
>>>
remove函数: set类型有好几个内置函数用来从set中移除已有的元素,首先是remove函数,如果remove的元素不存在,会抛出 KeyError 异常。
>>> A = {'a','b'}
>>> A.remove('c')
Traceback (most recent call last):
File "<pyshell#65>", line 1, in <module>
A.remove('c')
KeyError: 'c'
>>>
若要不抛出异常,可以使用discard函数
>>> A = {'a','b'}
>>> A.discard('c')
>>> A
set(['a', 'b'])
>>>
上述两个函数都是指定set中某一个元素,而pop函数无需指定元素,每次运行时会删除任意一个元素,并返回这个元素的值。当set为空时,抛出
KeyError
>>> A = {'a','b'}
set(['a', 'b'])
>>> A.pop()
'a'
>>> A.pop()
'b'
>>> A.pop()
Traceback (most recent call last):
File "<pyshell#71>", line 1, in <module>
A.pop()
KeyError: 'pop from an empty set'
>>>
set的内置函数 clear 用来清空set
>>> A = {'a','b'}
set(['a', 'b'])
>>> A.clear()
>>> A
set([])
>>>
与list、dict类似,set类型也能有comprehension的构造法:
>>> {i for i in range(10)}
set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>>
各位读后有什么想法,请在下方留言吧!如果对本文有疑问或者寻求合作,欢迎 联系邮箱 。邮箱已到剪贴板
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。