每日10行代码93:编写高质量python代码方法10——尽量用enumerate取代range

这一章的内容写的有些啰嗦,我适当精简下。
假如有一个列表,遍历的时候同时想遍历到内容和索引。一般情况下我们可能会这样做:

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))

要点:

  1. enumerate 函数提供了一种精简的写法,可以在遍历迭代器时获知每个元素的索引。
  2. 尽量用enumerate来改写那种将range与下标访问相结合的序列遍历代码。
  3. 可以给enumerate提供第二个参数,以指定开始计数时所用的值(默认为0)

个人评价:这一条的方法不是特别的重要,但是很实用,因为程序中经常遇到要同时遍历下标和值的情况。用上enumerate能少费点心思来处理下标。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值