这一章的内容写的有些啰嗦,我适当精简下。
假如有一个列表,遍历的时候同时想遍历到内容和索引。一般情况下我们可能会这样做:
for i in range(len(flavor_list)):
flavor = flavor_list[i]
print('%d: %s'%(i+1, flavor))
这种代码不便于理解,也不够优雅,python中有个函数专门解决这个问题,那就是enumerate(). enumerate 可以把各种迭代器包装为生成器,以便稍后输出值。生成器每次 产生一对输出值,其中,前都表示循环下标,后者表示从迭代器中获取到的下一个序列元素。这样写代码会非常简洁。
for i ,flavor in enumerate(flavor_list):
print('%d: %s'%(i+1, flavor))
enumerate还可以指定函数开始计数时用的值,这样能把代码写的更短。
for i ,flavor in enumerate(flavor_list, 1):
print('%d: %s'%(i+1, flavor))
要点:
- enumerate 函数提供了一种精简的写法,可以在遍历迭代器时获知每个元素的索引。
- 尽量用enumerate来改写那种将range与下标访问相结合的序列遍历代码。
- 可以给enumerate提供第二个参数,以指定开始计数时所用的值(默认为0)
个人评价:这一条的方法不是特别的重要,但是很实用,因为程序中经常遇到要同时遍历下标和值的情况。用上enumerate能少费点心思来处理下标。