LQB(2)-python-枚举
前言
python中的枚举一般有两个说法,一个是枚举算法(暴力求解法,算法层面),一个是遍历使用enumerate()函数或者enum模块创建()。
暴力求解法在之前的博文里面讲过了👇,这篇主要讲enumerate()函数和enum模块。
python算法从入门到实践(章一):枚举(暴力)算法_《玩转python编程中的枚举算法》-CSDN博客
一、enumerate() 函数
1. 功能
enumerate() 是一个内置函数,用于在遍历可迭代对象(如列表、元组、字符串等)时,同时获取元素的索引和值。
2. 语法
enumerate(iterable, start=0)
-
iterable:需要遍历的可迭代对象。 -
start:索引的起始值(默认为 0)。
3. 示例
fruits = ['apple', 'banana', 'cherry']
for index, value in enumerate(fruits):print(index, value)
输出:
0 apple
1 banana
2 cherry
4. 特点
-
内置函数:无需导入任何模块。
-
用途:简化遍历时的索引管理。
二、enum 模块
1. 功能
enum 模块用于定义枚举类型。枚举类型是一种特殊的类,用于表示一组固定的常量(如星期、状态码等),提高代码的可读性和可维护性。
2. 语法
from enum import Enumclass EnumName(Enum):MEMBER1 = value1MEMBER2 = value2...
3. 示例
from enum import Enumclass Weekday(Enum):MONDAY = 1TUESDAY = 2WEDNESDAY = 3THURSDAY = 4FRIDAY = 5SATURDAY = 6SUNDAY = 7print(Weekday.MONDAY) # 输出: Weekday.MONDAY
print(Weekday.MONDAY.value) # 输出: 1
4. 特点
-
需要导入:
enum模块不是内置函数,需要显式导入。 -
用途:定义一组命名的常量,避免使用魔法数字(magic numbers)。
三、enumerate() 和 enum 的区别
| 特性 | enumerate() | enum 模块 |
|---|---|---|
| 类型 | 内置函数 | 模块(需导入) |
| 功能 | 遍历可迭代对象时获取索引和值 | 定义枚举类型(一组命名的常量) |
| 使用场景 | 遍历列表、元组、字符串等 | 定义状态码、选项分类等 |
| 是否需要导入 | 不需要 | 需要导入 enum 模块 |
| 示例 | for i, v in enumerate(['a', 'b', 'c']): | class Color(Enum): RED = 1 |
四、为什么需要 enum 模块?
尽管 enumerate() 可以方便地遍历可迭代对象,但它无法替代 enum 模块的功能。以下是 enum 模块的主要优势:
-
提高代码可读性:
-
使用枚举类型可以避免魔法数字(magic numbers,在代码中直接出现的、没有明确意义的硬编码数字或字符串),使代码更易读。
-
例如,
Weekday.MONDAY比1更直观。
-
-
类型安全:
-
枚举成员是唯一的,不能随意赋值或修改。
-
例如,
Weekday.MONDAY = 2会引发错误。
-
-
支持迭代和比较:
-
枚举类型支持遍历、比较等操作。
-
例如:
for day in Weekday:print(day)
-
-
扩展功能:
-
enum模块提供了@unique装饰器、auto()等功能,方便定义复杂的枚举类型。
-
五、总结
-
enumerate():用于遍历可迭代对象时获取索引和值,是内置函数,无需导入。 -
enum模块:用于定义枚举类型,表示一组固定的常量,需要显式导入。
相关文章:
LQB(2)-python-枚举
前言 python中的枚举一般有两个说法,一个是枚举算法(暴力求解法,算法层面),一个是遍历使用enumerate()函数或者enum模块创建()。 暴力求解法在之前的博文里面讲过了👇,…...
MongoDB开发规范
分级名称定义P0核心系统需7*24不间断运行,一旦发生不可用,会直接影响核心业务的连续性,或影响公司名誉、品牌、集团战略、营销计划等,可能会造成P0-P2级事故发生。P1次核心系统这些系统降级或不可用,会间接影响用户使用…...
为什么DeepSeek服务器繁忙?
致敬DeepSeek 用户层面 用户数量激增:DeepSeek 免费且功能强大,对普通用户和开发者都极具吸引力124。尤其是在新功能推出、新模型上线或相关热门活动期间,大量用户会在短时间内涌入9。例如春节期间,DeepSeek 的用户量达到四千万7。…...
律所录音证据归集工具:基于PyQt6与多线程的自动化音频管理解决方案
在律所日常工作中,音频证据的整理与归集是一个高频且复杂的任务。面对大量的案件录音文件,如何实现快速且准确的分类与存档,成为了律所提高效率、降低出错率的关键。本文将通过技术角度解析一款名为律所录音证据归集工具的项目,详…...
【含开题报告+文档+PPT+源码】基于SpringBoot+Vue旅游管理网站
开题报告 本论文探讨了一款采用现代Web开发技术构建的台州市旅游综合信息与服务平台的设计与实现。该系统基于SpringBoot框架,以其轻量级、快速开发和强大的企业级应用支持能力为核心后端技术支撑,结合Vue.js前端框架及ElementUI组件库,为用…...
unity碰撞的监测和监听
1.创建一个地面 2.去资源商店下载一个火焰素材 3.把procedural fire导入到自己的项目包管理器中 4.给magic fire 0 挂在碰撞组件Rigidbody , Sphere Collider 5.创建脚本test 并挂在magic fire 0 脚本代码 using System.Collections; using System.Collections.Generic; usi…...
DeepSeek-R1 32B Windows+docker本地部署
最近国产大模型DeepSeek兴起,本地部署了一套deepseek同时集成Open WebUI界面,给大家出一期教程。 软件:Ollama、docker、Open WebUI 一、用Ollama下载模型 首先我们需要安装Ollama,它可以在本地运行和管理大模型。 到Ollama官网 https://ol…...
C++11新特性之unique_ptr智能指针
本节继续介绍智能指针,不了解的读者可以先阅读——C11新特性之shared_ptr智能指针-CSDN博客 1.介绍 unique_ptr是C11标准提供的另一种智能指针。与shared_ptr不同的是,unique_ptr指针指向的堆内存无法同其他unique_ptr共享,也就是每一片堆内…...
Vue与Konva:解锁Canvas绘图的无限可能
前言 在现代Web开发中,动态、交互式的图形界面已成为提升用户体验的关键要素。Vue.js,作为一款轻量级且高效的前端框架,凭借其响应式数据绑定和组件化开发模式,赢得了众多开发者的青睐。而当Vue.js邂逅Konva.js,两者结…...
python绘图之柱状堆积图的绘制
本节来学习用python来绘制柱状堆积图. 使用的库为matplotlib.pyplot,numpy 代码如下 # 导入必要的库 import matplotlib.pyplot as plt # 用于绘图 import numpy as np # 用于数值计算# 模拟一些数据 x [数值{}.format(i) for i in range(10)] # 创建一个包含10个元素的列…...
剪辑学习整理
文章目录 1. 剪辑介绍 1. 剪辑介绍 剪辑可以干什么?剪辑分为哪些种类? https://www.bilibili.com/video/BV15r421p7aF/?spm_id_from333.337.search-card.all.click&vd_source5534adbd427e3b01c725714cd93961af 学完剪辑之后如何找工作or兼职&#…...
DeepSeek从入门到精通:全面掌握AI大模型的核心能力
文章目录 一、DeepSeek是什么?性能对齐OpenAI-o1正式版 二、Deepseek可以做什么?能力图谱文本生成自然语言理解与分析编程与代码相关常规绘图 三、如何使用DeepSeek?四、DeepSeek从入门到精通推理模型推理大模型非推理大模型 快思慢想&#x…...
AI大模型训练实战:分布式与微调指南
AI大模型训练实战:分布式与微调指南 适用人群:有一定深度学习基础,正在或即将参与大模型(如 GPT、DeepSeek 等)训练与部署的工程师、研究者;想要理解分布式策略与微调方法的读者。 一、大模型为何需要分布式与微调? 随着 GPT、DeepSeek 等大模型参数规模攀升至数十亿甚…...
整合 Redis 分布式锁:从数据结构到缓存问题解决方案
引言 在现代分布式系统中,Redis 作为高性能的键值存储系统,广泛应用于缓存、消息队列、实时计数器等多种场景。然而,在高并发和分布式环境下,如何有效地管理和控制资源访问成为一个关键问题。Redis 分布式锁正是为了解决这一问题…...
并查集题目
并查集题目 聚合一块(蓝桥)合根植物(蓝桥)等式方程的可满足性省份数量 并查集(Union-Find)算法是一个专门针对「动态连通性」的算法。双方向的连通。 模板: class UF {// 连通分量个数private …...
日志2025.2.9
日志2025.2.9 1.增加了敌人挥砍类型 2.增加了敌人的死亡状态 在敌人身上添加Ragdoll,死后激活布偶模式 public class EnemyRagdoll : MonoBehaviour { private Rigidbody[] rigidbodies; private Collider[] colliders; private void Awake() { rigidbodi…...
支持多种网络数据库格式的自动化转换工具——VisualXML
一、VisualXML软件介绍 对于DBC、ARXML……文件的编辑、修改等繁琐操作,WINDHILL风丘科技开发的总线设计工具——VisualXML,可轻松解决这一问题,提升工作效率。 VisualXML是一个强大且基于Excel表格生成多种网络数据库文件的转换工具&#…...
Java并发编程笔记
Java并发基础知识补全 启动 启动线程的方式只有: 1、X extends Thread;,然后X.start 2、X implements Runnable;然后交给Thread运行 线程的状态 Java中线程的状态分为6种: 1. 初始(NEW):新创建了一个线程对象&…...
大语言模型实践——基于现有API的二次开发
基于现有的API平台做一些实用的AI小应用。 API服务商:阿里云百炼 云服务器:阿里云(2核2GB) 部署框架:gradio 调用框架:openai 语言:Python (注:若搭建网站或API接口…...
获取程序运行目录 (jar运行目录)
FileSystems.getDefault().getPath("").toAbsolutePath().toString() 和 Path.get(MyClass.class.getProtectionDomain().getCodeSource().getLocation().toURI()).getParent() 这两个代码片段在Java中用于获取不同的路径,尤其在打包为JAR文件运行时会有显…...
C++的std--ranges适配器视图元素类型推导规则与用户自定义类型
C20引入的std::ranges库彻底改变了序列操作的范式,其中适配器视图通过惰性求值和管道操作符实现了高效的函数式编程。当开发者尝试将用户自定义类型融入这套体系时,元素类型推导的复杂规则往往成为技术深水区。本文将揭示适配器视图背后的类型魔法&#…...
路径规划算法大对决:A星、改进A星与新A星
A星 改进A星 新A星算法 路径规划 放在一张图上 对比 三天对比线在一张图 避障在路径规划领域,A星算法就像一位老将,一直以来都备受瞩目。而随着研究的深入,改进A星和新A星算法也相继登场,今天咱们就把这几位“选手”放在一…...
数字游民工作流:OpenClaw+nanobot全球远程办公方案
数字游民工作流:OpenClawnanobot全球远程办公方案 1. 为什么需要自动化全球办公方案 作为一名长期在东南亚各国旅居的数字游民,我深刻体会到跨时区工作的痛苦。凌晨三点被欧洲同事的Slack消息吵醒,错过亚太区的晨会,或是忘记在不…...
Lychee模型API网关配置:Kong中间件集成指南
Lychee模型API网关配置:Kong中间件集成指南 1. 引言 在AI服务部署过程中,如何有效管理和保护模型API是一个常见挑战。Lychee模型作为强大的多模态处理工具,在生产环境中需要可靠的流量控制和安全防护机制。这就是API网关发挥作用的地方。 …...
打破平台壁垒:AI驱动的全渠道内容生产新范式
打破平台壁垒:AI驱动的全渠道内容生产新范式 【免费下载链接】Awesome-Dify-Workflow 分享一些好用的 Dify DSL 工作流程,自用、学习两相宜。 Sharing some Dify workflows. 项目地址: https://gitcode.com/GitHub_Trending/aw/Awesome-Dify-Workflow …...
使用FFmpeg高效实现MKV多语言字幕动态切换方案
1. MKV字幕基础与FFmpeg核心能力解析 第一次接触MKV视频封装格式时,我被它的灵活性惊艳到了。这种被称为Matroska的容器格式,就像瑞士军刀一样能同时容纳视频、音频、字幕等多种轨道。特别是对多语言字幕的支持,让它成为国际版视频分发的首选…...
平面六杆机构的运动仿真(毕业论文+CAD图纸+开题报告+外文翻译)
平面六杆机构作为机械传动领域的重要构件,其运动特性直接影响机械系统的整体性能。该机构由六个刚性杆件通过转动副或移动副连接形成闭合环路,通过调整杆长比例与铰链位置,可实现复杂轨迹输出与多自由度运动控制。相较于四杆机构,…...
AIGlasses_for_navigation 模型微调教程:使用自定义数据适配特定场景
AIGlasses_for_navigation 模型微调教程:使用自定义数据适配特定场景 你是不是觉得,那些通用的导航模型,在工厂车间或者医院走廊里用起来,总有点“水土不服”?路线规划可能没错,但遇到一些特殊的设备、标识…...
攻克Atlas OS中Xbox应用登录错误0x89235107的完整方案
攻克Atlas OS中Xbox应用登录错误0x89235107的完整方案 【免费下载链接】Atlas 🚀 An open and lightweight modification to Windows, designed to optimize performance, privacy and security. 项目地址: https://gitcode.com/GitHub_Trending/atlas1/Atlas …...
Tina Linux 适配 RTL8733bs WIFI 模块:从设备树到网络连接全流程解析
1. 硬件接口配置与设备树修改 第一次接触RTL8733bs这个Wi-Fi/蓝牙二合一模块时,我花了两天时间才搞明白硬件连接和设备树配置的关系。这个模块通过SDIO接口与全志V853主控通信,蓝牙部分则使用UART接口。下面我就把踩过的坑和验证过的正确配置分享给大家。…...
