为了账号安全,请及时绑定邮箱和手机立即绑定

成为枚举这个 Python 内置函数的老手

通过使用 enumerate() 来更高效地编写 Python 循环,使代码更干净、更高效。

照片由 Flo P 提供(来自 Unsplash

你好,世界!你在用Python编程吗?如果你没在循环中用enumerate(),那你可能还是个Python新手。

遍历列表是很常见的操作,Python 使用简单的 for 循环使得迭代列表变得很容易。然而,如果你在迭代列表时没有合适的工具来同时跟踪索引和元素,你可能会错过更简洁和高效的代码。

嗨,大家好,我的名字是CyCoderX,今天我们来聊聊一些常见的坑以及如何用内置的enumerate()函数让你的代码瞬间变专业。

zh: 让我们直接跳进去吧!

如果可以的话,通过点赞来支持我。如果你有兴趣了解更多关于Python数据工程数据科学 的内容,那就关注我吧。😊

使用Python和ChatGPT API自动化会议摘要
新手常遇到的问题
1. 使用 range(len()) 遍历列表

初学者在遍历列表时通常常用的一种方式是跟踪索引,结合range()len()的使用。

my_list = ['apple', 'banana', 'cherry']  
# 对于my_list中的每个索引i:
for i in range(len(my_list)):  
    # 打印索引i及其对应的my_list中的元素
    print(i, my_list[i])

输出:没有输入内容。

    0 苹果  
    1 香蕉  
    2 樱桃

这个可以运行,但并不理想。你手动处理索引,尽管如此,它只能完成任务。这并不能体现你可能达到的Python技能水平。

2. 步骤:创建一个手动计数器

另一种方法是手动创建并递增一个计数器变量。这看起来是这样的:

# 这段代码用于遍历水果列表并打印每个水果及其索引
水果列表 = ['苹果', '香蕉', '樱桃']
计数器 = 0
for 水果 in 水果列表:
    print('当前计数:', 计数器, '当前水果:', 水果)
    计数器 += 1

输出:

此处为空输出:如有具体内容,此处将提供其翻译。

0 苹果,1 香蕉,2 樱桃(樱桃果)

不过,这可以运作,但显得很笨重且多余。这样做的话,会使你的代码变得过于复杂。

使用Python和ChatGPT API自动化电子邮件回复生成:使用AI自动化来简化电子邮件管理

照片由 Mika Baumeister 拍摄,发布于 Unsplash

在项目中使用ChatGPT API 指南:一步一步来
使用 enumerate()——这是 Pythonic 的方式

所以,你应该怎样在迭代列表的同时追踪索引呢?这时就可以用enumerate()了。这个内置函数帮你自动处理索引,让你的代码更简洁。

# 定义一个包含三种水果的列表,并使用enumerate函数遍历该列表,打印每个元素的索引和值。
my_list = ['apple', 'banana', 'cherry']  
for index, item in enumerate(my_list):  
    print(index, item)

输出:

零 个 苹果  
一 个 香蕉  
二 个 樱桃

使用 enumerate(),你可以在每一轮迭代中同时拿到索引和对应的项。这样更简洁易读,而且——最关键的是——这更符合 Python 的风格。

数据科学基础:技巧与工具,了解核心概念和技术

你创作开发者内容其实是在帮那些遇到问题的开发者。 — William Imoh

选择适合在线零售的Azure存储解决方案 优化Azure存储以满足在线零售的数据需求
enumerate()怎么用

enumerate()函数可以接受一个像列表这样的可迭代对象,在遍历过程中,它会返回索引和对应的项。基本用法例如如下:

    enumerate(可迭代的, start=0)
  • iterable : 您想要遍历的序列或集合。

  • start : 起始位置(可选,默认为 0)。

如果你想从不同的数字开始索引,你也可以通过指定 start 参数来实现从不同的数字开始索引。

# 定义一个包含三种水果的列表
fruit_list = ['apple', 'banana', 'cherry']  
# 使用enumerate函数遍历列表,从1开始计数
for index, item in enumerate(fruit_list, start=1):  
    # 打印序号和水果名称
    print(f"序号:{index},水果:{item}")

输出: 不需要提供额外的翻译内容。

    1 一个苹果(或一根香蕉或一颗樱桃)中的  
    2 一根香蕉(同上)  
    3 一颗樱桃

它的灵活性是其中一个原因,当你需要在循环中同时获取索引和项目时,enumerate() 应该是你的首选,因为它可以同时处理索引和项目。

[理解非结构化数据和半结构化数据:YAML、JSON 和 XML](了解半结构化和非结构化数据)
关于 enumerate() 的好处
1. 更简洁的代码

使用 enumerate(),你可以避免编写不必要的样板代码,如管理计数器或使用 range(len())。你的代码会更易读、更简洁。

2. 增强可读性.

enumerate()函数清楚地显示你在同时使用索引和项,这让任何读你代码的人都一目了然。这种清晰度在专业编码环境中非常重要。

3. 内置高效性

由于 enumerate() 是一个内置函数,它已被优化以提高性能。虽然手动跟踪索引也可以,但会增加不必要的开销,而 Python 的内置函数正是为了避开这种开销而设计的。

enumerate()的实用案例:

下面看看几个使用 enumerate() 特别有帮助的常见场景:

1. 根据索引修改列表中的项目

当你需要根据索引更新列表中的元素时,使用enumerate()函数是一个非常实用的方法。

my_list = ['apple', 'banana', 'cherry']  # 这是一个包含三个元素的列表
for index, item in enumerate(my_list):    # 使用for循环遍历该列表
    if index % 2 == 0:                    # 如果索引是偶数
        my_list[index] = item.upper()     # 则将该元素转换为大写
print(my_list)                            # 最后打印该列表

输出:

结果:

['APPLE', 'Banana', 'CHERRY']
2. 使用索引调试

在调试时,项目的索引和值非常有用。使用 enumerate() 例如,可以轻松地同时在一行中同时打印索引及其值。

    my_list = ['apple', 'banana', 'cherry']  
    for index, item in enumerate(my_list):  
        print(f"索引 {index}:{item}")
3. 多个列表的操作

当你需要同时处理两个或多个列表时,可以将这两个函数enumerate()zip()结合使用,让代码更符合 Python 风格。这可以使代码更为简洁和优雅。

    水果 = ['苹果', '香蕉', '樱桃']  
    颜色 = ['红', '黄色', '红']  
    for 索引, (水果, 颜) in enumerate(zip(水果, 颜色)):  
        print(f"{索引}: {水果} 是 {颜}色。")

输出:

(无内容可译)

    0: 苹果是红色的  
    1: 香蕉是黄的  
    2: 樱桃也是红色的
NumPy数组的复制与视图:提升内存效率和性能
结束语。

使用 enumerate() 函数不仅可以使您的 Python 循环更简洁,还能提高代码的可读性和可维护性,使代码更容易理解和修改。通过消除手动计数器的使用或繁琐的 range(len()) 方法,enumerate() 让您能够专注于逻辑而非机械操作。这正体现了 Python 的核心哲学,即编写既干净又具有表现力的代码,对于希望遵循最佳实践的开发人员来说,enumerate() 函数必不可少。

对于从事大型项目开发的开发者来说,代码清晰度变得至关重要。无论是别人阅读你的代码,还是你自己以后再看,使用 enumerate() 可以让你清楚地知道你在同时遍历索引和项目。这样的小改动能大大减少读取和调试循环时的认知压力,节省时间并减少错误的机会。随着团队的扩大,保持这样的代码规范有助于促进团队合作并减少混乱。

最终,enumerate() 是每个 Python 开发者都应该熟悉的工具。它不仅体现你对 Python 内置功能的掌握,还体现了编写高效、整洁代码的专业态度。不论你是在编写一个小脚本还是参与大型软件项目,使用 enumerate() 都能使你的编码风格更加 Pythonic 和专家级。

什么是PEP 8以及它为什么在Python中非常重要?学习PEP 8:编写整洁和一致的Python代码的关键
在 Python 中的 is 和 == 的区别

照片由 Call Me FredUnsplash 拍摄

最后的话:

谢谢您花时间读这篇文章。

这篇文章由 CyCoderX 在 Medium 上发表。

嘿!我是CyCoderX, 一位热爱构建从头到尾的解决方案的数据工程师。我写的文章涉及Python、SQL、AI、数据工程领域、生活品味以及更多内容!

如果你想看看类似的文章和更新,可以随便看看我的 Medium 个人主页:

CyCoderX

点击这里访问CyCoderX的Medium主页: CyCoderX

CyCoderX的数据科学

查看列表页面

17个故事

跟我一起探索技术、数据以及更多领域的世界!

你觉得这篇文章怎么样?在下面的评论里告诉我……或者在评论框上方告诉我,取决于你的设备!哦,看你用的是什么设备哦!🙃

你可以通过以下方式支持我。
  1. 给这个故事鼓50次掌
  2. 在评论区留言分享你的想法
  3. 标出你最喜欢的部分
要一个简单的英语解释 🚀

感谢您加入_Plain English社区!在您离开之前,

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消