python enumerate函数的使用方法总结

时间:2021-05-22

enumerate函数用于遍历序列中的元素以及它们的下标。

enumerate函数说明:

enumerate()是python的内置函数

enumerate在字典上是枚举、列举的意思

函数原型:enumerate(sequence, [start=0])

功能:将可循环序列sequence以start开始分别列出序列数据和数据下标

即对一个可遍历的数据对象(如列表、元组或字符串),enumerate会将该数据对象组合为一个索引序列,同时列出数据和数据下标。

举例说明:

存在一个sequence,对其使用enumerate将会得到如下结果:

start sequence[0]start+1  sequence[1]start+2 sequence[2]......

适用版本:

  • Python2.3+
  • Python2.x
  • 注意:在python2.6以后新增了start参数

    英文解释:

    Return an enumerate object. sequence must be a sequence, an iterator, or some other object which supports iteration. The next() method of the iterator returned by enumerate() returns a tuple containing a count (from start which defaults to 0) and the values obtained from iterating over sequence。

    代码实例:

    enumerate参数为可遍历的变量,如 字符串,列表等; 返回值为enumerate类。

    import strings = string.ascii_lowercasee = enumerate(s)print sprint list(e)

    输出为:

    abcdefghij[(0, 'a'), (1, 'b'), (2, 'c'), (3, 'd'), (4, 'e'), (5, 'f'), (6, 'g'), (7, 'h'), (8, 'i'), (9, 'j')]

    在同时需要index和value值的时候可以使用 enumerate。

    该实例中,line 是个 string 包含 0 和 1,要把1都找出来:

    def xread_line(line): return((idx,int(val)) for idx, val in enumerate(line) if val != '0') print read_line('0001110101')print list(xread_line('0001110101'))

    如果对一个列表,既要遍历索引又要遍历元素时,首先可以这样写:

    list1 = ["这", "是", "一个", "测试"]for i in range (len(list1)): print i ,list1[i]

    上述方法有些累赘,利用enumerate()会更加直接和优美:

    list1 = ["这", "是", "一个", "测试"]for index, item in enumerate(list1): print index, item>>>0 这1 是2 一个3 测试

    enumerate还可以接收第二个参数,用于指定索引起始值,如:

    list1 = ["这", "是", "一个", "测试"]for index, item in enumerate(list1, 1): print index, item>>>1 这2 是3 一个4 测试

    补充

    如果要统计文件的行数,可以这样写:

    count = len(open(filepath, 'r').readlines())

    这种方法简单,但是可能比较慢,当文件比较大时甚至不能工作。

    可以利用enumerate():

    count = 0for index, line in enumerate(open(filepath,'r')): count += 1

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

    声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

    相关文章