第10条:尽量用enumerate取代range
在一系列整数上面迭代时,内置的range函数很有用。
对于字符串列表这样的序列式数据结构,可以直接在上面迭代。
当迭代列表的时候,通常还想知道当前元素在列表中的索引。例如,要按照喜好程度打印出自己爱吃的冰淇淋口味。一种办法是用range来做。
与单纯迭代f?lavor_list或是单纯使用range的代码相比,上面这段代码有些生硬。我们必须获取列表长度,并且通过下标来访问数组。这种代码不便于理解。
Python提供了内置的enumerate函数,以解决此问题。enumerate可以把各种迭代器包装为生成器,以便稍后产生输出值。生成器每次产生一对输出值,其中,前者表示循环下标,后者表示从迭代器中获取到的下一个序列元素。这样写出来的代码会非常简洁。
还可以直接指定enumerate函数开始计数时所用的值(本例从1开始计数),这样能把代码写得更短。
要点
enumerate函数提供了一种精简的写法,可以在遍历迭代器时获知每个元素的索引。
尽量用enumerate来改写那种将range与下标访问相结合的序列遍历代码。
可以给enumerate提供第二个参数,以指定开始计数时所用的值(默认为0)。
时间: 2024-11-08 18:57:50