Effective Python 第7条:enumerate取代range
2022/1/2 1:09:23
本文主要是介绍Effective Python 第7条:enumerate取代range,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
range可以用来迭代一系列整数,如下:
for i in range(10): print(i)
当我们迭代数据结构,例如字符串列表,可以直接在这个序列上迭代,如下:
flavor_list = ['vanilla', 'chocolate', 'pecan'] for flavor in flavor_list: print(f'{flavor} is delicious') # vanilla is delicious # chocolate is delicious # pecan is delicious
但是当我们迭代list的过程中,要知道元素在list里的位置时,就需要使用range,如下:
flavor_list = ['vanilla', 'chocolate', 'pecan'] for i in range(len(flavor_list)): flavor = flavor_list[i] print(f'{i+1}: {flavor}') # 1: vanilla # 2: chocolate # 3: pecan
但是上面步骤太多了,我们可以使用enumerate简化。enumerate能够把任何一种迭代器(iterator)封装成惰性生成器(lazy generator,参见第30条)。这样每次循环就从iterator获取下一个值,同时还会给出本轮循环的序号,即生成器每次产生一对输出值。下面通过内置的next函数手动推进enumerate所返回的这个iterator。如下:
it = enumerate(flavor_list) print(next((it))) print(next((it))) # (0, 'vanilla') # (1, 'chocolate')
enumerate输出的每一对数据,都可以拆分(unpacking
)到for语句两个变量里,如下:
for i, flavor in enumerate(flavor_list): print(f'{i+1}: {flavor}') # 1: vanilla # 2: chocolate # 3: pecan
还可以通过enumerate的第二个参数指定起始序列号,如下,从1开始:
for i, flavor in enumerate(flavor_list, 1): print(f'{i}: {flavor}') # 1: vanilla # 2: chocolate # 3: pecan
要点
- enumerate函数可以简洁的代码迭代iterator,而且可以指出当前这轮循环的序号。
- 使用enumerate取代range指定下标的取值。
- 可以通过enumerate的第二个参数指定起始序号(默认为0)。
这篇关于Effective Python 第7条:enumerate取代range的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-24Python编程基础详解
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南
- 2024-11-16`PyMuPDF4LLM`:提取PDF数据的神器
- 2024-11-16四种数据科学Web界面框架快速对比:Rio、Reflex、Streamlit和Plotly Dash
- 2024-11-14获取参数学习:Python编程入门教程