Python 遍历 7 大招:循环、枚举、列表推导全收录


在 Python 编程中,遍历列表(List)看似简单,却隐藏着编程思维的深度。
它不仅是掌握循环的基础,更关乎你对 Python 迭代协议性能优化可读性 的理解。
一名优秀的 Python 程序员,能在不同场景下选择最合适的遍历姿势,写出简洁优雅且高效的代码。

本文带你系统梳理 7 种 Python 列表遍历绝招,让你从“写得对”走向“写得妙”,全面开阔编程视野。


第一招:传统 for 循环 —— 最基础,最通用

fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
    print(fruit)

✅ 优点:简单、直观、易读
✅ 场景:90% 的业务逻辑足够应对
⚠️ 注意:不要强行用索引 range(len(fruits)),易出错且冗长


第二招:enumerate() —— 下标与元素,双剑合璧

for index, fruit in enumerate(fruits):
    print(f"{index}: {fruit}")

✅ 优点:

  • 优雅获取下标(index)和元素(value)
  • 避免手动管理计数器,减少 Bug

✅ 进阶用法:

for index, fruit in enumerate(fruits, start=1):
    print(f"第{index}个水果是 {fruit}")

第三招:列表推导式 —— 一行搞定,Pythonic 的代表

[print(fruit) for fruit in fruits]

✅ 优点:简洁优雅,适合数据生成
⚠️ 注意:不推荐只为“打印”用列表推导,容易产生“无用的列表”

✅ 典型用法:

squares = [x**2 for x in range(10)]

第四招:while 循环 —— 处理复杂迭代或特殊终止条件

i = 0
while i < len(fruits):
    print(fruits[i])
    i += 1

✅ 场景:动态增删列表元素时慎用 for 循环,while 更安全
⚠️ 注意:务必避免死循环!


第五招:zip() 多列表并行遍历 —— 高级利器

colors = ["red", "yellow", "purple"]
for fruit, color in zip(fruits, colors):
    print(f"{fruit} is {color}")

✅ 场景:

  • 同步遍历多个列表
  • 数据合并处理

⚠️ zip 遍历到最短列表结束,慎防数据丢失

✅ 进阶:

for fruit, color in zip(fruits, colors, strict=True):  # Python 3.10+
    print(fruit, color)

第六招:反向遍历 —— 倒序也优雅

方法一:reversed()

for fruit in reversed(fruits):
    print(fruit)

方法二:负索引

for i in range(len(fruits) - 1, -1, -1):
    print(fruits[i])

✅ 应用场景:

  • 删除元素时避免“下标塌陷”
  • 数据反序处理,如栈结构模拟

第七招:迭代器与生成器 —— 面向大数据与性能的必备技能

iterator = iter(fruits)
while True:
    try:
        fruit = next(iterator)
        print(fruit)
    except StopIteration:
        break

✅ 优点:

  • 支持懒加载(lazy evaluation)
  • 适合海量数据处理(如日志、文件流)

✅ 延伸阅读:yield 生成器在数据流场景中的威力


实战总结:如何选择最佳遍历方式?

场景推荐用法理由
普通遍历for item in list:直观简单
需要索引enumerate()防止手动计数出错
生成新列表或转化列表推导式Pythonic,性能好
多列表同步遍历zip()代码整洁
反向处理或删除reversed() 或负索引安全避免下标错位
海量数据流或懒加载iter(), next(), 生成器 yield低内存占用,支持流式计算

深度思考:遍历,背后是对“可迭代协议”的理解

你可知:

  • Python 中所有可迭代对象(Iterable)都可被 for 遍历
  • 本质是对象实现了 __iter__() 方法
  • 生成器本质就是高级迭代器,支持“无限数据流”

✅ 例:

class MyRange:
    def __init__(self, n):
        self.n = n
    def __iter__(self):
        self.i = 0
        return self
    def __next__(self):
        if self.i < self.n:
            self.i += 1
            return self.i - 1
        raise StopIteration

从此,for 循环不再是“黑盒”,而是你手中的武器。


未来趋势与启示:AI 时代的遍历思维

  1. 大模型驱动的数据流编程:生成器 + 协程(async for)将成为主流
  2. Pandas/Numpy 的向量化遍历:更关注“整体运算”,少用 Python 层 for
  3. 可读性第一,性能第二:代码风格和团队协作胜过盲目优化

结语:掌握列表遍历,是走向“高级 Python”的第一步

遍历不仅仅是“循环”的技巧,更是一种思维方式

✅ 选择合适工具,优雅解决问题
✅ 深入理解 Python 迭代机制,掌控底层
✅ 写出既“好看”又“高效”的 Python 代码

愿你用好这 7 大遍历绝招,从此写 Python 如行云流水,
面对任何数据结构,都能挥洒自如,游刃有余!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

测试者家园

你的认同,是我深夜码字的光!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值