集合是Python的一种数据类型,集合是一个可变容器。常用于列表的去重。

什么是集合

  • 集合是一个可变容器
  • 集合中的数据对象都是唯一的(不可重复)
  • 集合是无序的存储结构
  • 集合是可迭代对象
  • 集合内的元素是不可变的

创建集合

  • 使用{}创建集合,集合元素使用,隔开
s = {1, 2}

注意:使用{}不可以创建空集合,因为创建出来的是一个字典。

  • 使用构造函数创建集合
s = set()

集合的运算

  • 交集- &
s1 = {1, 2, 3}
s2 = {2, 3, 4}
print(s1 & s2)
  • 并集- |
s1 = {1, 2, 3}
s2 = {2, 3, 4}
print(s1 | s2)
  • 补集- -
s1 = {1, 2, 3}
s2 = {2, 3, 4}
print(s1 - s2)
# 生成属于s1但不属于s2的所有元素
  • 对称补集- ^
s1 = {1, 2, 3}
s2 = {2, 3, 4}
print(s1 - s2)
  • 还有一些基本的运算,可以查看Python运算符进行学习

集合的内建函数

  • len() 集合内元素的个数
  • max() 最大值
  • min() 最小值
  • sum() 和
s = {11, 22, 44, 6, 0, 10}
print(len(s))
print(max(s))
print(min(s))
print(sum(s))
  • any() 任何一个元素为真,返回真
s = {11, 0}
boolean = any(s)
print(boolean)
  • all() 所有元素为真,返回真
s = {11, 22, 33, "string"}
boolean = all(s)
print(boolean)

集合的方法

  • add() 添加元素,元素存在,则不执行
s = {11, 22, 33}
s.add(44)
print(s)
  • clear() 清空集合所有的元素
s = {11, 22, 33}
s.clear()
print(s)
  • remove() 移除指定的元素
s = {11, 22, 33, 44, 55}
s.remove(11)
print(s)
  • pop() 随机删除一个元素
s = {11, 22, 33, 44, 55}
s.pop()
print(s)
  • difference() 返回两个集合的补集
s1 = {11, 22, 33, 44}
s2 = {55, 66, 77, 22, 44, 88}
print(s1.difference(s2))
  • difference_update() 移除两个集合中都存在的元素
s1 = {11, 22, 33, 44}
s2 = {55, 66, 77, 22, 44, 88}
s1.difference_update(s2)
print(s1)
print(s2)
  • isdisjoint() 判断两个集合中是否有相同的元素,返回一个布尔值,没有返回True,否则就是False
s1 = {11, 22, 33, 44}
s2 = {55, 66, 77, 22, 44, 88}
boolean = s1.isdisjoint(s2)
print(boolean)
  • 以上只介绍部分常用方法,等待你的补充

集合的遍历

s = {11, 22, 33, 44, 55}
for i in s:
print(i)

集合推导式

集合推导式允许使用可迭代对象生成集合的表达式

语法:

{表达式 for 变量 in 可迭代对象 if 条件}
l = [1, 2, 3, 4, 5, 6]
s = {x for x in l if x %2 == 0}
print(s)

集合的去重

list1 = [11, 22, 33, 11, 22, 11, 44, 11]
print(set(list1))

固定集合

  • 不可变的容器,无序,元素唯一

创建固定集合- 使用构造函数(frozenset)

fs = frozenset()
fs_num = frozenset([1, 2, 3, 4])
  • 固定集合的运算

    • 交集,并集, 补集,对称补集
    • in / not in
    • 其他运算符
  • 固定集合的方法
    • 取出修改集合的方法,其余便是固定集合的方法

由于固定集合在实际开发中,用到的不是很多,所以没有展开详细教程。

随机推荐

  1. MySQL 8 InnoDB Table 和 Page 压缩

    压缩用一点CPU换取磁盘IO.内存空间.磁盘空间. 在有Secondary Indexes 的表中,使用压缩更加明显,相关索引数据也会压缩. InnoDB 表压缩 对表压缩只需要在Create Tab ...

  2. C#的冒泡排序

    C#实现的从小到大的冒泡排序: public void BubbleSort(int[] array) { int length = array.Length; ; i < length - ; ...

  3. 回炉重造之重读Windows核心编程-006-线程

    线程也是有两部分组成的: 线程的内核对象,操作系统用来管理线程和统计线程信息的地方. 线程堆栈,用于维护现场在执行代码的时候用到的所有函数参数和局部变量. 进程是线程的容器,如果进程中有一个以上的线程 ...

  4. 安装Linux系统时LSI RAID卡的驱动挂载

    转载原文地址:https://www.jianshu.com/p/64415712401e 当使用较新的SAS卡来安装Linux系统时,经常会遇到在系统安装界面读不到RAID的情况,这时就需要考虑Li ...

  5. 持续更新phpstorm h和pycharm 激活码

    1.hosts文件写入 0.0.0.0 account.jetbrains.com0.0.0.0 www.jetbrains.com 2.激活码: AHD9079DKZ-eyJsaWNlbnNlSWQ ...

  6. 《Javascript DOM编程艺术》学习笔记 第1-6章

    第1章 Javascript简史 Javascript是Netspace公司与Sun公司合作开发的,Javascript 1.0版于1995年推出. 为与微软公司竞争,Netspace公司和Sun公司 ...

  7. Java连载75-StringBuffer和StringBuilder

    一.StringBuffer和StringBuilder 1.StringBuffer是什么? 答:是一个字符串缓冲区,工作原理:预先在内存中申请一块空间以容纳字符序列,如果预留的空间,则进行自动扩容 ...

  8. Sublime text3 最新版破解,永久有效

    下载sublimeText3的安装包并安装(已经安装的可以忽略) 在hosts文件中添加:127.0.0.1    license.sublimehq.com(hosts文件地址:C:\Windows ...

  9. cat基础用法

    Linux中的cat命令连接文件并打印到标准输出设备上(通常是shell).cat的最常见用法之一是显示文件,还可以即时创建文件,并可以直接在终端上进行基本编辑. 创建文件 使用cat命令创建文件,请 ...

  10. JS: javascript 点击事件执行两次js问题 ,解决jquery绑定click事件出现点击一次执行两次问题

    javascript 点击事件执行两次js问题 在JQuery中存在unbind()方法,先解绑再添加点击事件,解决方案为: $(".m-layout-setting").unbi ...