Python中集合(set)的详细使用

文章目录

  • 前言
  • 一、集合的创建
  • 1.使用花括号{}
  • 2.使用set()函数
  • 二、集合元素的添加
  • 1.add()方法
  • 2.update()方法
  • 三、集合元素的删除
  • 1.remove()方法
  • 2.discard()方法
  • 3.pop()方法
  • 四、集合类型的操作符
  • 五、集合的其他操作
  • 1.del语句删除整个集合
  • 2.clear()方法清空整个集合
  • 3.判断元素是否存在于集合中
  • 4.计算集合的元素个数
  • 5.copy()拷贝集合
  • 6.集合推导式
  • 六、过滤函数filter()
  • 前言

    集合也是存储元素的数据类型。集合中的元素是无序的不重复的,所以我们也无法通过函数找到某个元素的索引。集合的主要作用是去重,不能对集合进行修改、查找、访问单个元素等操作,可以进行添加、删除、整体打印等操作。

    一、集合的创建

    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=' ')
    

    运行结果如下:

    作者:忙_

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python中集合(set)的详细使用

    发表回复