#5月学习挑战#Python入门-基础语法-enumerate用法

enumerate是python内置类builtins.enumerate2.x3.x都支持。其作用如注释,对一个可迭代的对象,枚举化,返回一个枚举对象。该枚举对象可返回其中每个迭代元素的游标及元素本身(英语欠佳,非直译,请谅解)

    """
    Return an enumerate object.
    
      iterable
        an object supporting iteration
    
    The enumerate object yields pairs containing a count (from start, which
    defaults to zero) and a value yielded by the iterable argument.
    
    enumerate is useful for obtaining an indexed list:
        (0, seq[0]), (1, seq[1]), (2, seq[2]), ...
    """
使用方法

对一个可迭代对象进行枚举化,可以返回两个值,即从零开始的游标和迭代元素本身。

    list = [
        {
            "id": 966024429,
            "title": "Question about license.",
        },
        {
            "id": 962477084,
            "title": "visibility of wiki pages",
        }
    ]
    for i, item in enumerate(list):
        print('')
        print("## 第{}条信息".format(i))
        print("* id: {}".format(item['id']))
        print("* title: {}".format(item['title']))

打开enumerate(object)的实现方法,发现他有个默认参数start,这个参数用于数字游标启示值得,比如我们如果设置一个5,则在上述for循环第一个返回的值为5。

    def __init__(self, iterable, start=0): # known special case of enumerate.__init__
        """ Initialize self.  See help(type(self)) for accurate signature. """
        pass
高端用法

enumerate注释所说枚举对list标记索引来说十分有用,我看到Python中enumerate用法详解中讲到一个enumerate有趣的场景。

当想获得一个大文件的行数时,我们可以通过len(open(filepath, 'r').readlines())来直接统计总长度。但是readlines()
将文件读入缓存,如果文件过大则会导致超时或者直接失败。

这时可以采用enumerate来将open(filepath,'r')枚举化,这样就不用了读取全部的文件信息,只需要遍历这个枚举对象即可。

其实这里有个问题,就是open()方法返回的是个流对象,这个为什么不就不吃内存,看了一个讲返回值的文章(pythonopen函数返回值_Python笔记:open函数和with临时运行环境(文件操作)),还是懵。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kiba_zwei

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值