stu

it2022-05-05  148

set学习

set 集合。一个无序不重复的元素的集。

一、创建set集合

方法1:直接用set()函数创建

集合的名称 = set() #这表示创建一个空的集合

实例

方法2:用{ } 创建

>>> s=set() >>> s set() >>> #注意:想要创建空集合,你必须使用 set() 而不是 {}。后者用于创建空字典,我们在后面介绍的一种数据结构。

集合的操作

集合添加

集合的添加有两种方式,分别是add和update。但是它们在添加元素时是由区别的:

add()方法 把要传入的元素作为一个整体添加到集合中,如: >>> s=set('one') >>> s {'e', 'o', 'n'} >>> s.add('two') >>> s {'e', 'two', 'o', 'n'} update()方法 是把要传入的元素拆分成单个字符,存于集合中,并去掉重复的字符。可以一次添加多个值,如: >>> s=set('one') >>> s {'e', 'o', 'n'} >>> s.update('two') >>> s {'e', 'n', 't', 'w', 'o'}

集合删除

集合的删除操作使用的方法跟列表是一样的,使用的也是remove方法。如:

setVar.remove(element) setVar :为一个set类型的变量 element :表示要查找并删除的元素 函数作用: 在集合setVar中查找element元素,如果存在则删除;如果没找到,则报错。 >>> s=set('one') >>> s {'e', 'o', 'n'} >>> s.remove('e') >>> s {'n', 'o'} setVar.discard(element) setVar :为一个set类型的变量 element :表示要查找并删除的元素 函数作用: 在集合setVar中查找element元素,如果存在则删除;如果没找到,则什么也不做。 >>> sList set([1, 2, 3, 4, 5]) >>> sList.discard(1) >>> sList set([2, 3, 4, 5]) s.pop() s:为set类型的变量 函数作用: 删除并返回set类型的s中的一个不确定的元素,如果为空引发KeyError错误。 >>> sList set([2, 3, 4, 5]) >>> sList.pop() 2 s.clear() s:set类型的变量 函数作用: 清空s集合中的所有元素 >>> sList set([3, 4, 5]) >>> sList.clear() >>> sList set([])

集合的遍历

集合的遍历跟序列的遍历方法完全一样。

>>> s=set('one') >>> s {'e', 'o', 'n'} >>> for i in s: print(i) ... ... e o n >>>

另一种遍历方式:

>>> s=set('one') >>> s {'e', 'o', 'n'} >>> for idex,i in enumerate(s): print (idex,i) ... ... 0 e 1 o 2 n >>>

变量idex表示集合中元素i的索引。

集合其他方法

函数说明len(s)set 的长度x in s测试 x 是否是 s 的成员x not in s测试 x 是否不是 s 的成员s.issubset(t)测试是否 s 中的每一个元素都在 t 中s.issuperset(t)测试是否 t 中的每一个元素都在 s 中s.union(t)返回一个新的 set 包含 s 和 t 中的每一个元素s.intersection(t)返回一个新的 set 包含 s 和 t 中的公共元素s.difference(t)返回一个新的 set 包含 s 中有但是 t 中没有的元素s.symmetric_difference(t)返回一个新的 set 包含 s 和 t 中不重复的元素s.copy()返回 set “s”的一个浅复制

集合的一些操作符

既然是集合,那就会遵循集合的一些操作方法,如求交集、并集、差集等。

交集

Python中求集合的交集使用的符号是“&”,返回连个集合的共同元素的集合,即集合的交集。

>>> st1 = set('python') >>> st1 set(['h', 'o', 'n', 'p', 't', 'y']) >>> st2 = set('htc') >>> st2 set(['h', 'c', 't']) >>> st1 & st2 set(['h', 't'])

并集(合集)

Python中求集合的并集用的是符号“|”,返回的是两个集合所有的并去掉重复的元素的集合。

>>> st1 set(['h', 'o', 'n', 'p', 't', 'y']) >>> st3 = set('two') >>> st3 set(['o', 't', 'w']) >>> st1 | st3 set(['p', 't', 'w', 'y', 'h', 'o', 'n'])

差集

Python中差集使用的符号是减号“-”。

>>> st1 set(['1', '3', '2', '5', '4', '7', '6']) >>> st2 = set('4589') >>> st2 set(['9', '8', '5', '4']) >>> st1 - st2 set(['1', '3', '2', '7', '6'])

返回的结果是在集合st1中但不在集合st2中的元素的集合。

集合的不同

查看两个集合的不同之处,使用的difference函数,等价于差集。如:   s1.difference(s3)   这种不同指的是集合s3相对于集合s1,不同的地方,也就是所有在集合s1中,而不再集合s2中的的元素组成的新集合。

>>> s1 set([1, 2, 3, 4, 5]) >>> s2 set([1, 2, 3, 4]) >>> s1.difference(s2) set([5]) >>> s3 set(['1', '8', '9', '5']) >>> s1.difference(s3) set([1, 2, 3, 4, 5])

集合的范围判断

集合可以使用大于(>)、小于(<)、大于等于(>=)、小于等于(<=)、等于(==)、不等于(!=)来判断某个集合是否完全包含于另一个集合,也可以使用子父集判断函数。

定义三个集合s1,s2,s3:

>>> s1=set([1, 2, 3, 4, 5]) >>> s2=set([1, 2, 3, 4]) >>> s3=set(['1', '8', '9', '5'])

大于(>)或大于等于(>=)

>>> s1 > s2 True >>> s1 > s3 False >>> s1 >= s2 True

表示左边集合是否完全包含右边集合,如集合s1是否完全包含集合s2。

小于(<)或 小于等于(<=)

>>> s2 < s1 True >>> s1 < s3 False >>> s3 < s1 False

表示左边的集合是否完全包含于右边的集合,如集合s1是否完全包含于集合s2。

等于(==)、不等于(!=)

>>> s1 == s2 False >>> s2 == s3 False >>> s1 != s2 True

判断两个集合是否完全相同。

不可变集合frozenset

Python中还有一种不可改变的集合,那就是frozenset,不像set集合,可以增加删除集合中的元素,该集合中的内容是不可改变的,类似于字符串、元组。

>>> f = frozenset() >>> f frozenset([]) >>> f = frozenset('asdf') >>> f frozenset(['a', 's', 'd', 'f']) >>> f = frozenset([1,2,3,4]) >>> f frozenset([1, 2, 3, 4]) >>> f = frozenset((1,2,3,4)) >>> f frozenset([1, 2, 3, 4]) >>> f = frozenset({1:2, 'a':2, 'c':3}) >>> f frozenset(['a', 1, 'c'])

如果试图改变不可变集合中的元素,就会报AttributeError错误。   不可变集合,除了内容不能更改外,其他功能及操作跟可变集合set一样。


最新回复(0)