• python基础-集合set及内置方法


    数据类型之集合-set

    • 用途:多用于去重关系运算

    • 定义方式:通过大括号存储,集合中的每个元素通过逗号分隔。集合内存储的元素必须是不可变的,因此,列表-List 和字典dict 不能存储在集合中

      注意:定义空集合时,必须使用set定义。

      # 定义空集合
      s1 = set()
      print(type(s1))
      
      # 非空集合定义
      s2 = {1,2,'a',2,'b'}		# s2 = set({1,2,'a','b'})
      print("s2:{}".format(s2))
      
      # 使用list 或tuple 或dict 作为输入集合,重复元素在set 中会自动被过滤
      s3 = set([1,2,3,2,4])
      print(type(s3))
      print(s3)				# 输出:{1,2,3,4}
      
      s4 = set((1,2,3,1,2))
      print(s4)				# 输出:{1,2,3}
      
      s5 = set({1:"alex",2:"egon",3:"sean"})
      print(s5)				# 输出:{1,2,3}
      
    • 特性:无序、可变、去重且可存储多个值的数据类型


    常用方法

    • 数学运算

      • 合集:数学上的并集,两个集合相加,去重后的元素。用 | 表示

        a = {1,2,3,4}
        b = {3,4,5,6}
        print(a | b)     # 打印结果:{1,2,3,4,5,6}
        
      • 交集:两个集合都存在且去重后的元素。用 & 表示

        a = {1,2,3,4}
        b = {3,4,5,6}
        print(a & b)   # 打印结果:{3,4}
        
      • 差集:集合a 和集合b ,集合a 减去 集合b 的元素。用 - 表示

        a = {1,2,3,4}
        b = {3,4,5,6}
        print(a - b)  # 打印结果:{1,2}
        print(b - a)  # 打印结果:{5,6}
        
      • 对称差集:减去同时存在于两个集合的元素,余下的元素就是对称差集。用 ^ 表示

        a = {1,2,3,4}
        b = {3,4,5,6}
        print(a ^ b)  # 打印结果:{1,2,5,6}
        
    • 集合的增删改查

      • add

        语法:set.add() 给集合添加元素,如果添加的元素在集合中已存在,则不执行任何操作

      s1 = set([1,2,3,4,5,4,3])
      s1.add('6')
      s1.add(3)	# 可以添加已存在的元素,但是不会有任何效果
      print(s1)	# 打印结果:{1,2,3,4,5,'6'}
      

      注意:add 方法不可以添加列表或字典,因列表和字典是可变的数据类型

      • update

        语法:set.update() 可以将列表,元组,字符串,字典中的元素打散增加到集合中

      s1 = {1,2,3}
      l1 = ['a','b','c']
      s1.update(l1)
      print(s1)				# 打印结果:{1,2,3,'a','b','c'}
      s2 = {1,2,3}
      t1 = ('1','2',3,4)
      s2.update(t1)			
      print(s2)				# 打印结果:{1,2,3,'1','2',4}
      s3 = {1,2,3}
      str1 = "dawn"
      s3.update(str1)
      print(s1)				# 打印结果:{1,2,3,'d','a','w','n'}
      s4 = {1,2,3}
      d1 = {"name":"sean","age":18,"hobby":["read","study"]}
      s4.update(d1)
      print(s1)				# 打印结果:{1,2,3,'name','age','hobby'} 取字典的key 作为元素
      
      • difference_update

        语法:set.difference_update(set1) 移除两个集合中都存在的元素并将值返回给set,set1不会改变

      s1 = {'a','e',1,2}
      s2 = {'e',1,2,3}
      s1.difference_update(s2)
      print(s1)			# 打印结果:{'a'}
      print(s2)			# 打印结果:{1,2,3,'e'}
      
      • remove

        语法:set.remove() 移除集合中的元素,如果集合中没有这个元素则会报错

      s1 = {1,2,'e','4'}
      s1.remove(2)
      print(s1)			# 打印结果:{1,'e','4'}
      
      s1 = {1,2,'e','4'}
      s1.remove(4)		# 报错,集合中没有这个元素
      print(s1)			
      
      • discard

        语法:set.discard() 和remove 一样都是移除集合中的元素,但如果结合中没有这个元素不会报错,这就是跟remove 的区别

      s1 = {1,2,'e','4'}
      s1.discard('2')		# 不报错
      print(s1)			# 打印结果:{1,2,'e','4'}
      
      s1 = {1,2,'e','4'}
      s1.discard(2)
      print(s1)			# 打印结果:{1,'e','4'}
      

    扩展

    1. frozenset 是不可变的集合
  • 相关阅读:
    java 多级图的最短路径
    在dos中编译java文件
    apollo客户端的长轮询机制的原理
    Apollo配置中心动态生效实现原理
    jmx_exporter+prometheus+grafana实现kafka metric监控
    XXL-JOB(1) 分布式任务系统选型和XXL-JOB介绍,这篇文章相当的经典呀
    grafana根据不同prometheus server统计数据
    XXL-JOB的使用教程
    普罗米修斯官方文档
    Prometheus标签的管理
  • 原文地址:https://www.cnblogs.com/xiaodan1040/p/11815371.html
Copyright © 2020-2023  润新知