Python--数据类型(下)

1. 集合(set)

集合是一个 无序、可变、不允许数据重复 的容器。

1.1 定义

v1 = {11, 22, 33, "alex"}
  • 无序:无法通过索引取值。
  • 可变:可以添加和删除元素。
  • 不允许数据重复:添加重复元素时,集合不会发生变化。

注意:定义空集合时,只能使用 v = set()​,不能使用 v = {}​(这样是定义一个空字典)。

v1 = set()  # 空集合
v2 = {}     # 空字典

1.2 独有功能

  1. 添加元素

    data = {"刘嘉玲", "关之琳", "王祖贤"}
    data.add("郑裕玲")
    print(data)
    
  2. 删除元素

    data = {"刘嘉玲", "关之琳", "王祖贤"}
    data.discard("关之琳")
    print(data)
    
  3. 交集

    s1 = {"刘能", "赵四", "⽪⻓⼭"}
    s2 = {"刘科⻓", "冯乡⻓", "⽪⻓⼭"}
    s3 = s1.intersection(s2)  # 或 s1 & s2
    print(s3)  # {"⽪⻓⼭"}
    
  4. 并集

    s1 = {"刘能", "赵四", "⽪⻓⼭"}
    s2 = {"刘科⻓", "冯乡⻓", "⽪⻓⼭"}
    s3 = s1.union(s2)  # 或 s1 | s2
    print(s3)
    
  5. 差集

    s1 = {"刘能", "赵四", "⽪⻓⼭"}
    s2 = {"刘科⻓", "冯乡⻓", "⽪⻓⼭"}
    s3 = s1.difference(s2)  # 或 s1 - s2
    print(s3)  # {"刘能", "赵四"}
    

1.3 公共功能

  1. 长度

    v = {"张三", "李四", "王五"}
    print(len(v))  # 3
    
  2. for 循环

    v = {"张三", "李四", "王五"}
    for item in v:print(item)
    
  3. 转换

    • 其他类型转换为集合时,会自动去重。
    v1 = [11, 22, 33, 11, 3, 99, 22]
    v2 = set(v1)
    print(v2)  # {11, 22, 33, 3, 99}
    

1.4 其他

  1. 元素必须可哈希
    集合的元素必须是可哈希的值(如 int​、bool​、str​、tuple​),而 list​、set​、dict​ 不可哈希。
  2. 查找速度快
    集合的查找效率非常高,因为其底层基于哈希表实现。

2. 字典(dict)

字典是一个 无序、键不重复 且元素只能是 键值对 的 可变容器。

2.1 定义

v1 = {}
v2 = dict()
info = {"age": 12,"status": True,"name": "qyiao","hobby": ["篮球", "足球"]
}

键值要求:

  • 键:必须可哈希(如 int​、bool​、str​、tuple​)。
  • 值:可以是任意类型。

2.2 独有功能

  1. 获取值

    info = {"age": 12, "status": True, "name": "qyiao"}
    data = info.get("name")
    print(data)  # qyiao
    
  2. 所有的键

    info = {"age": 12, "status": True, "name": "qyiao"}
    print(info.keys())  # dict_keys(['age', 'status', 'name'])
    
  3. 所有的值

    info = {"age": 12, "status": True, "name": "qyiao"}
    print(info.values())  # dict_values([12, True, 'qyiao'])
    
  4. 所有的键值对

    info = {"age": 12, "status": True, "name": "qyiao"}
    print(info.items())  # dict_items([('age', 12), ('status', True), ('name', 'qyiao')])
    
  5. 设置值

    data = {"name": "qyiao", "email": "xxx@live.com"}
    data.setdefault("age", 18)
    print(data)  # {'name': 'qyiao', 'email': 'xxx@live.com', 'age': 18}
    
  6. 更新字典

    info = {"age": 12, "status": True}
    info.update({"age": 14, "name": "qyiao"})
    print(info)  # {'age': 14, 'status': True, 'name': 'qyiao'}
    
  7. 移除键值对

    info = {"age": 12, "status": True, "name": "qyiao"}
    data = info.pop("age")
    print(info)  # {'status': True, 'name': 'qyiao'}
    

2.3 公共功能

  1. 长度

    info = {"age": 12, "status": True, "name": "qyiao"}
    print(len(info))  # 3
    
  2. 是否包含

    info = {"age": 12, "status": True, "name": "qyiao"}
    print("age" in info)  # True
    
  3. for 循环

    info = {"age": 12, "status": True, "name": "qyiao"}
    for key, value in info.items():print(key, value)
    

2.4 其他

  1. 嵌套
    字典的值可以是任意类型,包括列表、字典等。

    data = {"name": "汪峰","age": 48,"wife": [{"name": "国际章", "age": 38}],"children": ["第一个娃", "第二个娃"]
    }
    

3. 浮点型(float)

浮点型用于表示小数。

3.1 基本操作

  1. 定义

    v1 = 3.14
    v2 = 9.89
    
  2. 类型转换

    v1 = 3.14
    data = int(v1)
    print(data)  # 3
    
  3. 保留小数位数

    v1 = 3.1415926
    result = round(v1, 3)
    print(result)  # 3.142
    

3.2 浮点型的坑

浮点型在计算时可能存在精度问题,例如:

print(0.1 + 0.2)  # 0.30000000000000004

解决方案:使用 decimal​ 模块进行精确计算。

import decimal
v1 = decimal.Decimal("0.1")
v2 = decimal.Decimal("0.2")
print(v1 + v2)  # 0.3

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/22316.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

力扣LeetCode: 2209 用地毯覆盖后的最少白色砖块

题目: 给你一个下标从 0 开始的 二进制 字符串 floor ,它表示地板上砖块的颜色。 floor[i] 0 表示地板上第 i 块砖块的颜色是 黑色 。floor[i] 1 表示地板上第 i 块砖块的颜色是 白色 。 同时给你 numCarpets 和 carpetLen 。你有 numCarpets 条 黑…

RabbitMQ 消息队列

1. 消息队列是什么? 当用户注册成功后,就发送邮件。当邮件发送成功了,接口才会提示注册成功信息。但由于发送邮件,依赖于其他厂商的服务,有可能他们的接口会非常耗时。那么用户就一直要等着邮件发送成功了,…

【SQL实验】触发器

下载素材文件”tsgl”、“成绩管理”,将tsgl.bak和成绩管理.bak数据库还原到库中【导入操作在之前的文章中详细讲过】 触发器 1、为图书表设置更新触发器,根据总编号来更新书名、作者、出版社、分类号和单价(根据总编号找到相应记录,然后更新书名、作者…

Win10系统Docker+DeepSeek+ragflow搭建本地知识库

文章目录 1、安装ollama1.1 下载1.2 安装1.3 cmd命令行测试安装成功1.4 拉取模型2、安装ragflow2.1 下载项目2.2 通过docker拉取镜像安装2.3 查看docker日志是否安装成功3、模型配置3.1 第一次登录需要注册3.2 模型添加4、知识库配置4.1 创建知识库4.2 上传文档4.3 解析5、聊天…

redis的应用,缓存,分布式锁

1.应用 1.1可以用作缓存 作用:提交数据的查询效率,减少对数据库的访问频率 什么数据适合放入缓存 1.查询频率高,修改频率低 2.对安全系数比较低 如何实现 Service public class DeptServer {Autowiredprivate DeptMapper deptMapper;Auto…

springboot整合 xxl-job

文章目录 一、xxl-job是什么二、使用步骤 1. 下载并运行管理端代码2. 访问管理页面,确认是否启动成功3. 配置执行器【在自己的springboot项目中配置】4. 在页面上创建执行器和任务,与项目中绑定 总结参考 一、xxl-job是什么 XXL-JOB 是一个分布式任务调…

Jenkins 环境搭建---基于 Docker

前期准备 提前安装jdk、maven、nodeJs(如果需要的话) 创建 jenkins 环境目录,用来当做挂载卷 /data/jenkins/ 一:拉取 Jenkins 镜像 docker pull jenkins/jenkins:lts 二:设置 Jenkins挂载目录 mkdir -p ~/jen…

小米路由器 AX3000T 降级后无法正常使用,解决办法

问题描述 买了个 AX3000T 路由器,想安装 OpenWRT 或者 安装 Clash 使用,看教程说是需要降级到 v1.0.47 版本。 结果刷机之后路由器无法打开了,一直黄灯亮,中间灭一下,又是黄灯长亮,没有 WIFI 没有连接。以…

金融学-金融机构

前言 金融机构在金融体系运行体系运营中起着不可获缺的关键作用.如规则的制定与监管-中央银行,体系的运营证券公司,体系的供贷的参与者金融中介.本章将用一种说明我们的金融体系是怎样改进经济效率的经济分析,来讲述相关金融机构 金融结构的经济学分析 世界各国的金融体系在…

公网远程家里局域网电脑过程详细记录,包含设置路由器。

由于从校内迁居小区,校内需要远程控制访问小区内个人电脑,于是早些时间刚好自己是电信宽带,可以申请公网ipv4不需要花钱,所以就打电话直接申请即可,申请成功后访问光猫设备管理界面192.168.1.1,输入用户名密码登录超管(密码是网上查下就有了)设置了光猫为桥接模式,然后…

002 SpringCloudAlibaba整合 - Feign远程调用、Loadbalancer负载均衡

前文地址: 001 SpringCloudAlibaba整合 - Nacos注册配置中心、Sentinel流控、Zipkin链路追踪、Admin监控 文章目录 8.Feign远程调用、loadbalancer负载均衡整合1.OpenFeign整合1.引入依赖2.启动类添加EnableFeignClients注解3.yml配置4.日志配置5.远程调用测试6.服务…

基于javaweb的SpringBoot校园二手商品系统设计和实现(源码+文档+部署讲解)

技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论…

国产开源PDF解析工具MinerU

前言 PDF的数据解析是一件较困难的事情,几乎所有商家都把PDF转WORD功能做成付费产品。 PDF是基于PostScript子集渲染的,PostScript是一门图灵完备的语言。而WORD需要的渲染,本质上是PDF能力的子集。大模型领域,我们的目标文件格…

stm32单片机个人学习笔记16(SPI通信协议)

前言 本篇文章属于stm32单片机(以下简称单片机)的学习笔记,来源于B站教学视频。下面是这位up主的视频链接。本文为个人学习笔记,只能做参考,细节方面建议观看视频,肯定受益匪浅。 STM32入门教程-2023版 细…

Springboot + Ollama + IDEA + DeepSeek 搭建本地deepseek简单调用示例

1. 版本说明 springboot 版本 3.3.8 Java 版本 17 spring-ai 版本 1.0.0-M5 deepseek 模型 deepseek-r1:7b 需要注意一下Ollama的使用版本: 2. springboot项目搭建 可以集成在自己的项目里,也可以到 spring.io 生成一个项目 生成的话,如下…

Ubuntu 的RabbitMQ安装

目录 1.安装Erlang 查看erlang版本 退出命令 2. 安装 RabbitMQ 3.确认安装结果 4.安装RabbitMQ管理界面 5.启动服务并访问 1.启动服务 2.查看服务状态 3.通过IP:port 访问界面 4.添加管理员用户 a)添加用户名:admin,密码&#xff1…

Powershell Install deepseek

前言 deepseekAI助手。它具有聊天机器人功能,可以与用户进行自然语言交互,回答问题、提供建议和帮助解决问题。DeepSeek 的特点包括: 强大的语言理解能力:能够理解和生成自然语言,与用户进行流畅的对话。多领域知识&…

VS Code 如何搭建C/C++开发环境

目录 1.VS Code是什么 2. VS Code的下载和安装 2.1 下载和安装 2.2.1 下载 2.2.2 安装 2.2 环境的介绍 2.3 安装中文插件 3. VS Code配置C/C开发环境 3.1 下载和配置MinGW-w64编译器套件 3.1.1 下载 3.1.2 配置 3.2 安装C/C插件 3.3 重启VSCode 4. 在VSCode上编写…

vue从入门到精通(十一):条件渲染

条件渲染 1.v-if 写法: (1).v-if“表达式” (2).v-else-if“表达式” (3).v-else“表达式” 适用于:切换频率较低的场景。 特点:不展示的DOM元素直接被移除。 注意:v-if可以和:v-else-if、v-else一起使用,但要求结构不能被“打断” 2.v-show 写法:v-show“…

Java之——“String类”(内容较多,结合目录察看分类)

前言 在C语言中已经涉及到字符串了,但是在C语言中要表示字符串只能使用字符数组或者字符指针,可以使用标准库提供的字符串系列函数完成大部分操作,但是这种将数据和操作数据方法分离开的方式不符合面向对象的思想,而字符串应用又…