python中enumerate()函数的使用

enumerate() 是 Python 中遍历列表(或可迭代对象)并同时获取「索引+元素」 的内置函数,核心作用是避免手动维护索引变量(如 i = 0; for x in list: ...; i +=1),让代码更简洁高效。

一、基本用法:遍历索引+元素

语法
enumerate(iterable, start=0)
  • iterable:要遍历的可迭代对象(列表、元组、字符串等,常用列表);
  • start:索引的起始值(默认是 0,可自定义,如 start=1 从 1 开始计数);
  • 返回值:迭代器,每次迭代返回一个 (索引, 元素) 的元组。
示例1:默认索引从 0 开始
fruits =["苹果","香蕉","橙子","葡萄"]# 用 enumerate 遍历列表(默认 start=0)for index, fruit inenumerate(fruits):print(f"索引 {index}:元素 {fruit}")
输出:
索引 0:元素 苹果 索引 1:元素 香蕉 索引 2:元素 橙子 索引 3:元素 葡萄 
示例2:自定义索引从 1 开始(start=1)
fruits =["苹果","香蕉","橙子","葡萄"]# 索引从 1 开始(适合场景:序号展示、排名等)for index, fruit inenumerate(fruits, start=1):print(f"第 {index} 个水果:{fruit}")
输出:
第 1 个水果:苹果 第 2 个水果:香蕉 第 3 个水果:橙子 第 4 个水果:葡萄 

二、核心优势:对比传统遍历(无 enumerate)

没有 enumerate() 时,要获取索引需手动维护变量,代码冗余且易出错:

fruits =["苹果","香蕉","橙子","葡萄"]# 传统方式:手动维护索引 i i =0for fruit in fruits:print(f"索引 {i}:元素 {fruit}") i +=1# 必须手动递增,忘记写就会出错
  • enumerate() 可直接省略 i 的定义和递增,代码更简洁、不易出错。

三、进阶用法

1. 遍历列表时修改元素(需注意:不能直接改迭代对象,要通过索引改原列表)
nums =[1,2,3,4]# 遍历索引和元素,将每个元素翻倍for idx, num inenumerate(nums): nums[idx]= num *2# 通过索引修改原列表print("修改后的列表:", nums)# 输出:[2, 4, 6, 8]
2. 结合条件筛选(按索引/元素过滤)
fruits =["苹果","香蕉","橙子","葡萄","芒果"]# 筛选出索引为偶数的元素(0、2、4)for idx, fruit inenumerate(fruits):if idx %2==0:print(f"索引 {idx}(偶数):{fruit}")
输出:
索引 0(偶数):苹果 索引 2(偶数):橙子 索引 4(偶数):芒果 
3. 与 list() 结合,直接生成「索引-元素」元组列表
fruits =["苹果","香蕉","橙子"]# 生成包含 (索引, 元素) 的列表 indexed_fruits =list(enumerate(fruits, start=1))print(indexed_fruits)# 输出:[(1, '苹果'), (2, '香蕉'), (3, '橙子')]
4. 遍历多维列表(嵌套列表)
matrix =[[1,2],[3,4],[5,6]]# 遍历二维列表的「行索引+行内容+列索引+列元素」for row_idx, row inenumerate(matrix):for col_idx, val inenumerate(row):print(f"行 {row_idx} 列 {col_idx}:{val}")
输出:
行 0 列 0:1 行 0 列 1:2 行 1 列 0:3 行 1 列 1:4 行 2 列 0:5 行 2 列 1:6 

四、常见误区

混淆 start 参数的作用
start 只改变索引的显示值,不改变列表的实际索引(原列表的索引仍从 0 开始):

fruits =["苹果","香蕉"]for idx, fruit inenumerate(fruits, start=100):print(f"显示索引 {idx},实际列表索引 {idx-100}:{fruit}")

输出:

显示索引 100,实际列表索引 0:苹果 显示索引 101,实际列表索引 1:香蕉 

试图直接修改迭代对象(错误)
enumerate() 返回的是元组 (idx, 元素),元组不可修改,若想改元素需通过原列表的索引:

nums =[1,2,3]for idx, num inenumerate(nums): num = num *2# 错误:只修改了临时变量 num,原列表不变print(nums)# 输出:[1, 2, 3](无变化)

正确做法:nums[idx] = num * 2(通过索引修改原列表)。

五、总结

enumerate() 是列表遍历的「效率工具」,核心场景:

  • 需要同时获取元素和它的位置(索引);
  • 避免手动维护索引变量,简化代码;
  • 支持自定义索引起始值(如序号、排名等场景)。

记住核心用法:for idx, elem in enumerate(列表, start=起始值):,几乎能覆盖所有列表遍历需索引的场景!

Read more

【AI大模型】DeepSeek + 通义万相高效制作AI视频实战详解

【AI大模型】DeepSeek + 通义万相高效制作AI视频实战详解

目录 一、前言 二、AI视频概述 2.1 什么是AI视频 2.2 AI视频核心特点 2.3 AI视频应用场景 三、通义万相介绍 3.1 通义万相概述 3.1.1 什么是通义万相 3.2 通义万相核心特点 3.3 通义万相技术特点 3.4 通义万相应用场景 四、DeepSeek + 通义万相制作AI视频流程 4.1 DeepSeek + 通义万相制作视频优势 4.1.1 DeepSeek 优势 4.1.2 通义万相视频生成优势 4.2

By Ne0inhk
【DeepSeek微调实践】DeepSeek-R1大模型基于MS-Swift框架部署/推理/微调实践大全

【DeepSeek微调实践】DeepSeek-R1大模型基于MS-Swift框架部署/推理/微调实践大全

系列篇章💥 No.文章01【DeepSeek应用实践】DeepSeek接入Word、WPS方法详解:无需代码,轻松实现智能办公助手功能02【DeepSeek应用实践】通义灵码 + DeepSeek:AI 编程助手的实战指南03【DeepSeek应用实践】Cline集成DeepSeek:开源AI编程助手,终端与Web开发的超强助力04【DeepSeek开发入门】DeepSeek API 开发初体验05【DeepSeek开发入门】DeepSeek API高级开发指南(推理与多轮对话机器人实践)06【DeepSeek开发入门】Function Calling 函数功能应用实战指南07【DeepSeek部署实战】DeepSeek-R1-Distill-Qwen-7B:本地部署与API服务快速上手08【DeepSeek部署实战】DeepSeek-R1-Distill-Qwen-7B:Web聊天机器人部署指南09【DeepSeek部署实战】DeepSeek-R1-Distill-Qwen-7B:基于vLLM 搭建高性能推理服务器10【DeepSeek部署实战】基于Ollama快速部署Dee

By Ne0inhk

DeepSeek各版本说明与优缺点分析_deepseek各版本区别

DeepSeek各版本说明与优缺点分析 DeepSeek是最近人工智能领域备受瞩目的一个语言模型系列,其在不同版本的发布过程中,逐步加强了对多种任务的处理能力。本文将详细介绍DeepSeek的各版本,从版本的发布时间、特点、优势以及不足之处,为广大AI技术爱好者和开发者提供一份参考指南。 1. DeepSeek-V1:起步与编码强劲 DeepSeek-V1是DeepSeek的起步版本,这里不过多赘述,主要分析它的优缺点。 发布时间: 2024年1月 特点: DeepSeek-V1是DeepSeek系列的首个版本,预训练于2TB的标记数据,主打自然语言处理和编码任务。它支持多种编程语言,具有强大的编码能力,适合程序开发人员和技术研究人员使用。 优势: * 强大编码能力:支持多种编程语言,能够理解和生成代码,适合开发者进行自动化代码生成与调试。 * 高上下文窗口:支持高达128K标记的上下文窗口,能够处理较为复杂的文本理解和生成任务。 缺点: * 多模态能力有限:该版本主要集中在文本处理上,缺少对图像、语音等多模态任务的支持。 * 推理能力较弱:尽管在自然语言

By Ne0inhk

用DeepSeek和Cursor从零打造智能代码审查工具:我的AI编程实践

💂 个人网站:【 摸鱼游戏】【神级代码资源网站】【星海网址导航】摸鱼、技术交流群👉 点此查看详情 引言:AI编程革命下的机遇与挑战 GitHub统计显示,使用AI编程工具的开发者平均效率提升55%,但仅有23%的开发者能充分发挥这些工具的潜力。作为一名全栈工程师,我曾对AI编程持怀疑态度,直到一次紧急项目让我彻底改变了看法。客户要求在72小时内交付一个能自动检测代码漏洞、优化性能的智能审查系统,传统开发方式根本不可能完成。正是这次挑战,让我探索出DeepSeek和Cursor这对"黄金组合"的惊人潜力。 一、工具选型:深入比较主流AI编程工具 1.1 为什么最终选择DeepSeek+Cursor? 经过两周的对比测试,我们发现不同工具在代码审查场景的表现差异显著: 工具代码理解深度响应速度定制灵活性多语言支持GitHub Copilot★★★☆★★★★★★☆★★★★Amazon CodeWhisperer★★☆★★★☆★★★★★★☆DeepSeek★★★★☆★★★★★★★☆★★★★☆Cursor★★★☆★★★★☆★★★★★★★★ 关键发现: * Dee

By Ne0inhk