掘金 人工智能 07月26日 09:40
苦练Python第31天:enumerate、zip与元组解包
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文介绍了Python中三个常被忽视但能极大提升代码简洁性和表达力的实用技巧:enumerate()、zip()和元组解包。enumerate()可以在循环中同时获取元素的索引和值,并支持自定义起始索引。zip()则能方便地将多个序列的元素一一配对,生成新的迭代器,但需注意处理长度不一致的情况,可借助itertools.zip_longest()。元组解包则可以将序列中的元素直接赋值给多个变量,实现代码的优雅拆分,还可以通过下划线`_`忽略不需要的值。掌握这些技巧能让Python代码更具可读性、更Pythonic,并减少潜在的错误。

🔢 enumerate() 让你在循环中轻松同时获取元素的索引和值,并通过`start`参数自定义索引起始,使代码更清晰易懂,例如 `for index, fruit in enumerate(fruits):`。

🔗 zip() 是一个强大的工具,可以将多个列表或序列的元素按顺序一一配对,生成包含元组的迭代器,便于并行处理。当序列长度不一致时,zip() 会以最短的序列为准停止迭代,如 `list(zip(a, b))`。

🎁 元组解包可以将序列(如元组、列表)的元素直接赋值给多个变量,实现代码的简洁拆分,例如 `name, age, job = person`。在循环中同样适用,如 `for number, word in pairs:`。

🎯 结合使用enumerate()和zip()可以实现更复杂的逻辑,例如在迭代一个序列的同时,为另一个序列的元素添加序号,从而编写出更简洁、更Pythonic的代码,有效减少bug。

💡 这三个技巧的核心价值在于提升代码的可读性、简洁性和效率,是成为一名优秀Python开发者的必备技能,能够显著优化代码的“Pythonic”程度。

前言

大家好,我是倔强青铜三。欢迎关注我,微信公众号:倔强青铜三。欢迎点赞、收藏、关注,一键三连!!!

欢迎回到 苦练Python100天 的第 31 天!
今天,我们一口气掌握三个常被忽视、却能瞬间让代码 更简洁、更优雅、更具表达力 的 Python 神技:

下面用极简示例带你秒懂。


🔢 1. enumerate() —— 循环里同时拿索引和值

❌ 传统写法

fruits = ['apple', 'banana', 'cherry']for i in range(len(fruits)):    print(i, fruits[i])

✅ 优雅写法

for index, fruit in enumerate(fruits):    print(index, fruit)

输出:

0 apple1 banana2 cherry

想让索引从 1 开始?

for i, fruit in enumerate(fruits, start=1):    print(i, fruit)

🔗 2. zip() —— 多列表元素配对神器

✅ 基本用法

names = ['Alice', 'Bob', 'Charlie']scores = [85, 92, 78]for name, score in zip(names, scores):    print(f"{name} scored {score}")

输出:

Alice scored 85Bob scored 92Charlie scored 78

⚠️ 长度不一致?

zip() 会停在最短的序列:

a = [1, 2, 3]b = ['x', 'y']print(list(zip(a, b)))  # [(1, 'x'), (2, 'y')]

需要填充缺失值,请用 itertools.zip_longest()


🎁 3. 解包 —— 把序列一键拆成变量

✅ 元组解包

person = ("John", 25, "Engineer")name, age, job = personprint(name)  # Johnprint(age)   # 25print(job)   # Engineer

✅ 循环里直接拆

pairs = [(1, 'one'), (2, 'two'), (3, 'three')]for number, word in pairs:    print(f"{number} = {word}")

🎯 忽略不需要的值

data = ("Tom", 30, "Doctor")name, _, profession = data

下划线 _ 是约定俗成的“占位符”。


🔍 为什么值得用?

工具典型场景
enumerate()需要索引 + 值的循环
zip()并行迭代多个序列
解包简洁地把序列拆成变量

三者结合,让你的代码 更易读、更 Pythonic、更少 Bug


🧠 实战挑战

students = ['Emma', 'Liam', 'Olivia']grades = [91, 88, 95]# 任务:输出 "1. Emma scored 91" 等# 提示:同时用 enumerate() 和 zip()

最后感谢阅读!欢迎关注我,微信公众号倔强青铜三。欢迎点赞收藏关注,一键三连!!!

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

Python enumerate zip 元组解包 代码优化
相关文章