数据类型之集合-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 是不可变的集合

python基础-集合set及内置方法的更多相关文章

  1. python基础-列表List及内置方法

    数据类型之列表-List 用途:用于存一个或多个不同类型的值 定义:通过中括号存值,每个值之间通过逗号进行分隔 l1 = [1,'a',3,'b'] 特性:有序.可变.存多个值的数据类型 常用方法: ...

  2. python基础-数字类型及内置方法

    --数字类型及内置方法 整型-int 用途:多用于年龄.电话.QQ号等变量 定义方法 age = 18 # age = int(18) 常用方式:多用于数学计算 # int(x)将x转换成整数,是向下 ...

  3. Python基础之数字类型内置方法

    目录 1. 整型内置方法(int) 2. 浮点型内置方法 3. 常用操作 1. 整型内置方法(int) 用途:年龄,号码,等级等 定义: age = 18 常用操作 # 算数运算.比较运算 age = ...

  4. Python基础之字符串类型内置方法

    目录 1. 字符串类型 2. 常用操作及内置方法 3. 其他内置方法 1. 字符串类型 用途:姓名,性别等 定义: name1 = 'zhaojun' name2 = "zhaojun&qu ...

  5. python 基础之列表切片内置方法

    列表操作 c=['cx','zrd','ajt','dne'] #定义一个列表,有4个元素 #增删改查 print(c[3]) #从0计数 测试 D:\python\python.exe D:/unt ...

  6. python基础-元组(tuple)及内置方法

    元组-tuple 用途:用于存储多个不同类型的值,但是不能存储可变类型数据 定义方法:用小括号存储数据,数据与数据之间通过逗号分隔,元组中的值不能改变. 注意: 1.定义元组时,如果里面只有一个值,在 ...

  7. 二十六. Python基础(26)--类的内置特殊属性和方法

    二十六. Python基础(26)--类的内置特殊属性和方法 ● 知识框架 ● 类的内置方法/魔法方法案例1: 单例设计模式 # 类的魔法方法 # 案例1: 单例设计模式 class Teacher: ...

  8. python学习day7 数据类型及内置方法补充

    http://www.cnblogs.com/linhaifeng/articles/7133357.html#_label4 1.列表类型 用途:记录多个值(一般存放同属性的值) 定义方法 在[]内 ...

  9. Python进阶之浅谈内置方法(补充)

    目录 列表类型的内置方法 元组类型的内置方法 字典类型的内置方法 集合类型的内置方法 列表类型的内置方法 1.作用:描述名字,说的话等 2.定义方式 s=['tim','age'] s=str('ti ...

随机推荐

  1. Python爬虫(二):Requests库

    所谓爬虫就是模拟客户端发送网络请求,获取网络响应,并按照一定的规则解析获取的数据并保存的程序.要说 Python 的爬虫必然绕不过 Requests 库. 1 简介 对于 Requests 库,官方文 ...

  2. 架构——android架构演进概述

    随着业务的发展和技术的变更,Android开发也经历了以下几个发展阶段: 看似高大上的名词,其实遵循着最简单的原则:分而治之(如何划分就是"架构",简单的事情如何串在一起就是&qu ...

  3. MySQL 深入理解索引B+树存储 (转载))

    出处:http://blog.codinglabs.org/articles/theory-of-mysql-index.html   摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一 ...

  4. Java 学习笔记之 Stop停止线程

    Stop停止线程: 使用stop()方法停止线程是非常暴力的,会抛出java.lang.ThreadDeath Error,但是我们无需显示捕捉, 以下捕捉只是为了看得更清晰. public clas ...

  5. spring5 源码深度解析----- 事务增强器(100%理解事务)

    上一篇文章我们讲解了事务的Advisor是如何注册进Spring容器的,也讲解了Spring是如何将有配置事务的类配置上事务的,实际上也就是用了AOP那一套,也讲解了Advisor,pointcut验 ...

  6. python编程基础之二十九

    栈和队列: 栈:先进后出,其他没多少特别之处了,一般可以用列表模拟栈,也可以用双端队列,封死一端. 队列:先进先出,也可以用列表模拟,但是一般用库函数,需要导collections 包:主要是为了解决 ...

  7. 【JZOJ5248】花花的聚会

    Description 注意测试数据中道路是 到 的单向道路,与题面恰好相反. Input Output Sample Input 7 7 1 3 1 2 6 7 3 6 3 5 3 4 7 2 3 ...

  8. Spring Boot2 系列教程(十二)@ControllerAdvice 的三种使用场景

    严格来说,本文并不算是 Spring Boot 中的知识点,但是很多学过 SpringMVC 的小伙伴,对于 @ControllerAdvice 却并不熟悉,Spring Boot 和 SpringM ...

  9. Cocos2d-x 学习笔记(10) ActionInstant

    1.概述 ActionInstant的子类都是立即完成的动作,即一帧就完成了,不像ActionInterval的子类动作需要定义动作总时间. Action类的继承关系图: 2.具体 ActionIns ...

  10. qt实现串口通讯

    摘要:上位机软件程序通过QT实现,采集输入信息,根据实际需要做出合适的串口通讯协议,实现效果如下图所示: 主要实现的功能: 1.串口基本参数可选,可调 2.显示区域可选择十六进制/asicii码显示, ...