在一系列整数上面迭代时,内置的range函数很有用。
当迭代列表的时候,如果还想知道当前元素在列表中的索引。一种办法是使用range来做:
fruit_list = ['apple','banana','peach']
for i in range(len(fruit_list)):
fruit = fruit_list[i]
print('%d: %s' % (i+1,fruit))
结果
上述代码有些生硬,因为既使用了列表的迭代,又使用了range,不易理解。
Python提供了内置的enumerate函数,以解决此问题。
enumerate可以把各种迭代器包装为生成器,以便稍后产生输出值。生成器每次产生一对输出值,其中,前者表示循环下标,后者表示从迭代器中获取到的下一个序列元素。
fruit_list = ['apple','banana','peach']
for i,fruit in enumerate(fruit_list):
print('%d: %s' % (i+1,fruit))
也可以直接指定enumerate函数开始计数时所用的值,这样代码会更短。
fruit_list = ['apple','banana','peach']
for i,fruit in enumerate(fruit_list,1):
print('%d: %s' % (i,fruit))
输出结果和之前的相同。
----搬运自《Effective Python》