集合是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. 原创:mysql5 还原至mysql 8.0.11数据库链接配置提示错误(修改内容有三处

    原创:mysql5 还原至mysql 8.0.11数据库链接配置提示错误改有三: a) mysql 连接jar包版修改 b)类路径修改 c)配置连接池地址修改 因版本升级,首先要修改 1:mysql- ...

  2. MTK迁移Oracle单库

    MTK迁移Oracle单库 一. Mtk安装 1.1     安装jdk 要求jdk版本在1.7以上 安装完jdk后将需要的数据库jdbc驱动拷贝到$JAVA_HOME/jre/lib/ext  目录 ...

  3. 使用 setTimeout 来模拟一个 setInterval

    setTimeout 超时调用:在多少时间 在执行: setinterval 每隔多少时间 就调用 例如: setTimeout这个的值是1000,也就是说在页面刷新后,1000毫秒之后才调用这个函数 ...

  4. qt creator源码全方面分析(2-9)

    目录 Semantic Highlighting 通用高亮 高亮和折叠块 Semantic Highlighting Qt Creator将C++,QML和JavaScript语言理解为代码,而不是纯 ...

  5. What is NodeJS(学习过程)

    为什么要学习node.首先是听说了这个和前后端分离有很大的关系.node作为一个基础的技术,需要提前学习.学习node,不打算直接先跟着视频去学习老师们的课程.因为想自己找到一种适合自己的学习方法.之 ...

  6. P5367 【模板】康托展开

    我们的生活充满了未知与玄学 ---------------------------------------- 链接:P5367 ------------------------------------ ...

  7. Python2与Python3比较

    1.print 函数 1. print语句没有了,取而代之的是print()函数. Python 2.6与Python 2.7部分地支持这种形式的print语法. 2.Unicode 1.  在pyt ...

  8. 转: Laravel的数据库迁移 介绍的比较清晰

    原文: https://blog.sbot.io/articles/12/Laravel-数据库迁移(Database-Migrations)操作实例 很多人可能在学习Laravel框架的时候,对La ...

  9. ng-项目结构

    ng启动过程 目录结构 . ├── e2e 端到端测试(暂且不关心) ├── node_modules npm安装的第三方包 ├── src 存放业务源码 ├── .angular-cli.json ...

  10. mybatis-plus invalid bound statement (not found) insert解决办法

    使用mybatis-plus时,使用IService.insert方法时,提示找不到insert方法,原因是,mybatis-plus提供了两个BaseMapper和IService. 改成引用imp ...