集合是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. PMP--1.5 项目管理描述

    项目所处的环境将影响每个项目管理过程的实施方式以及项目制约因素的优先顺序. 一. 管理一个项目的过程 ​管理一个项目通常包括(但不限于): 1. 识别项目需求 2. 处理相关方的各种需要.关注和期望 ...

  2. 测试.NET core MiddleWare 运行逻辑

    话不多说,直接开整. 首先创建一个.NET CORE web 工程,创建完成之后,会自动创建相关文件如图(本示例基于.NET CORE 3.0): 打开Startup.cs可以看到在Configure ...

  3. Linux基础:df命令总结

    本文只总结一些常用的用法,更详细的说明见man df和 df --help. df命令 df命令用于显示目前在Linux系统上的文件系统的磁盘使用情况统计. df命令主要是从各文件系统的Super b ...

  4. WebStorm 2019.3.1 永久破解

    PS:动手能力强的来,手残的去淘宝买吧,大概15块钱1年.建议看完后在动手,有一个全局观,浪费不了多少时间 一. 下载破解补丁文件 链接:https://pan.baidu.com/s/16-rPPH ...

  5. 使用Arduino Nano驱动Lora模块

    使用Arduino Nano驱动Lora模块 为什么选用Lora 射频通信芯片有很多种,但是一般在同样功耗下,距离没有Lora远;同等范围下,没有Lora节能. Lora通信只适用于低速率,高延时的场 ...

  6. Object类、日期时间类、system类及StringBuilder字符串容器

    一.Object类常用API 1.1 概述 java.lang.Object类是Java语言中的根类,即所有类的父类.Object类中描述的所有方法子类都可以使用.在对象实例化的时候,最终找的父类就是 ...

  7. vue ----element-ui 文件上传upload 组件 实现 及其后台

    1.前台 action 不用改 :https://jsonplaceholder.typicode.com/posts/ getFile: 获取文件 data(){ return { file: {} ...

  8. HTML表单概念、语法及创建表单,案例

    form 标签 Input标签的type属性值 单行文本域 <input type="text" /> 图像域(图像提交按钮) 下拉菜单和列表标签 select 标签属 ...

  9. 【pycharm基本操作】项目创建、切换、运行、字体颜色设置,常见包的安装步骤

    创建新项目 退出项目 怎样区别虚拟环境和系统环境? 虚拟环境和系统环境切换:进入项目切换解释器 切换项目 创建python目录和文件 代码运行方式一: 还可以这样执行代码方式二: 文件的剪切.复制.删 ...

  10. Swift Playgrounds for mac基础知识介绍

    Swift Playgrounds是一款适用于iPad和Mac的革命性应用程序,它使Swift学习变得互动而有趣.它不需要编码知识,因此非常适合刚开始的学生.使用Swift解决难题,以掌握基本知识.S ...