Python中集合(set)的详细使用
文章目录
前言
集合也是存储元素的数据类型。集合中的元素是无序的
、不重复的
,所以我们也无法通过函数找到某个元素的索引。集合的主要作用是去重,不能对集合进行修改、查找、访问单个元素等操作,可以进行添加、删除、整体打印等操作。
一、集合的创建
1.使用花括号{}
s1 = {}#无法创建空集s1,这个默认创建的是字典
print(type(s1))
print(s1)
s2 = {'apple','banana','grape'}
print(s2)
运行结果如下:
2.使用set()函数
如果没有参数,则创建空集;有参数,这个参数必须是可迭代类型。如果想创建一个字符串作为元素组成的集合,可以将该字符串放在列表、元组等可迭代类型的数据中。
s1 = set()#创建空集合s1
print(s1)
s2 = set('apple')#传入一个字符串,遍历赋值给集合s2并去重
print(s2)
s3 = set(['apple','banana','grape'])#列表为可迭代类型
print(s3)
s4 = set([1,5,6,2,3,5,1,9])#参数为包含重复元素的列表
print(s4)
运行结果如下:
二、集合元素的添加
1.add()方法
add())方法一次只能添加一个
元素,将元素作为一个整体添加到集合中。
s1 = {'apple','banana','grape'}
print(s1)
s1.add('orange')#添加元素'orange',不存在,在任意位置添加该元素
print(s1)
s1.add('banana')#添加元素'banana',已存在,不做任何操作
print(s1)
运行结果如下:
2.update()方法
update()方法一次可以添加多个
元素,用逗号隔开,将元素拆分成多个元素添加到集合中。
s1 = {'apple','banana'}
print(s1)
s1.update(['grape'])#遍历添加列表到集合S1中
print(s1)
s1.update('orange')#遍历添加字符串到集合s1中
print(s1)
运行结果如下:
三、集合元素的删除
1.remove()方法
用于删除集合中指定
的元素,若该元素不在集合中,则报KeyError的异常。
s1 = set(['apple','banana','grape'])
print(s1)
s1.remove('banana')#删除'banana'
print(s1)
s1.remove('orange')#删除'orange',该元素不存在,报错
print(s1)
运行结果如下:
2.discard()方法
用于删除集合中指定
的元素,若该元素不在集合中,该方法不执行任何操作。
s1 = set(['apple','banana','grape'])
print(s1)
s1.discard('banana')#刪除'banana'
print(s1)
s1.discard('orange')#刪除'orange',该元素不存在,不执行任何操作
print(s1)
运行结果如下:
3.pop()方法
用于随机
删除集合中的一个元素,若集合中没有元素,则报KeyError的异常。其实pop()方法删除的是集合中的第一个元素,但是每次集合中的第一个元素是不确定的,所以是随机删除集合中的一个元素。
s1 = set(['apple','grape'])
print(s1)
s1.pop()#随机删除一个元素,集合长度为1
print(s1)
s1.pop()#再次随机删除一个元素,集合长度为0
s1.pop()#集合没有元素可以删除。报错
print(s1)
运行结果如下:
当创建集合时,传入的参数是由数字组成的列表或元组,则删除的是左边第一个元素(集合的输出是固定的顺序)。
s1 = set([9,4,5,2,6,7,1,8])
print(s1)
print(s1.pop())
print(s1)
运行结果如下:
四、集合类型的操作符
名称 | 符号 | 图形化 | 作用 |
---|---|---|---|
联合操作符 | | | ![]() |
|
将集合1、2合并成一个新集合 | |||
交集操作符 | & | ![]() |
|
将集合1、2中相同的元素组合成一个新集合 | |||
差补操作符 | – | ![]() |
|
将只属于集合1或只属于集合2的元素组合成一个新集合 | |||
对称差分操作符 | ^ | ![]() |
|
将只属于集合1和只属于集合2的元素组合成一个新集合 |
s1 = {1,2,5}
s2 = {2,6,8}
print(s1 | s2)#取两个集合中所有的元素,组成新集合
print(s1 & s2)#取共同拥有的元素组成新集合
print(s1 - s2)#取属于s1,不属于s2的元素组成新集合
print(s1 ^ s2)#取只属于s1和只属于s2的元素组成新集合
print()#或
print(s1.union(s2))#等同于|
print(s1.intersection(s2))#等同于&
print(s1.difference(s2))#等同于-
print(s1.symmetric_difference(s2))#等同于^
运行结果如下:
五、集合的其他操作
1.del语句删除整个集合
s1 = {'apple','banana','grape'}
print(s1)
del s1#删除集合s1,之后就不存在该集合了
print(s1)
运行结果如下:
2.clear()方法清空整个集合
s1 = {'apple','banana','grape'}
print(s1)
s1.clear()#清空整个集合,但是该集合还存在,是空集
print(s1)
运行结果如下:
3.判断元素是否存在于集合中
s1 = {'apple','banana','grape'}
print('apple' in s1)#判断'apple'是否在集合s1中
print('banana' not in s1)#判断'banana'是否不在集合s1中
运行结果如下:
4.计算集合的元素个数
s1 = {'apple','banana','grape'}
print(len(s1))
运行结果如下:
5.copy()拷贝集合
s1 = {'apple','banana','grape'}
print(s1.copy())
print(id(s1),id(s1.copy()))
运行结果如下:
6.集合推导式
语法格式:
variable = {expr for value in collection if condition}
变量 表达式 收集器 条件
举例:
s1 = {i for i in range(5)}#0-4之间的整数
print(s1)
s2 = {i for i in range(10) if i%2==0}#0-9之间的偶数
print(s2)
运行结果如下:
六、过滤函数filter()
filter()函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。
语法格式:
filter(function,iterable)
函数 序列(可迭代对象)
序列的每个元素都作为参数依次传递给function函数进行判断,返回布尔值True或False,再将返回True的元素放到新列表中。
举例:
s1 = {1,2,3,4,5,6,7,8,9}
is_odd = lambda x:x%2#判断x是不是奇数
l = filter(is_odd, s1)#是奇数的元素放入新列表l中
for i in l:
print(i,end=' ')
运行结果如下:
作者:忙_