enumerate()

Posted qianslup

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了enumerate()相关的知识,希望对你有一定的参考价值。

enumerate说明:

  • enumerate()是python内置函数。
  • 对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值。
  • enumerate多用于在for循环中得到计数

 

语法:

 enumerate(sequence, start=0)

其中,sequence 可以为序列,如 list、set 等,也可以为一个 iterator 或者任何可以迭代的对象,

默认的 start 为 0,函数返回本质上为一个迭代器,可以使用 next() 方法获取下一个迭代元素。

 

需要提醒的是,对于字典的迭代循环, enumerate() 函数并不适合,虽然在使用上并不会提示错误,

但输出的结果与期望的大相径庭,这是因为字典默认被转换成了序列进行处理。

要获取迭代过程中字典的 key 和 value,应该使用 iteritems 方法。

 

源代码:

def enumerate(sequence, start=0):
    n = start
    for elem in sequence:
    yield n, elem
    n += 1

 

使用对比

获取序列迭代的索引和值

推荐使用函数 enumerate() ,主要是为了解决在循环中获取索引以及对应值的问题。

它具有一定的惰性(lazy),每次仅在需要的时候才会产生一个(index, item)对。

# 方法一:在每次循环中对索引变量进行自增
li = [a, b, c, d]
index = 0
for i in li:
    print("index:", index, "element:", i)
    index += 1


# 方法二:使用 range() 和 len() 方法结合
li = [a, b, c, d, e]
for i in range(len(li)):
    print("index:", i, "element:", li[i])

    
# 方法三:使用 while 循环,用 len() 获取循环次数
li = [a, b, c, d, e]
index = 0
while index < len(li):
    print("index:", index, "element:", li[index])
    index += 1


# 方法四:使用 zip() 方法
li = [a, b, c, d, e]
for i, e in zip(range(len(li)), li):
    print("index:", i, "element:", e)


# 方法五:使用 enumerate() 获取序列迭代的索引和值
li = [a, b, c, d, e]
for i, e in enumerate(li):
    print("index:", i, "element:", e)

以上是关于enumerate()的主要内容,如果未能解决你的问题,请参考以下文章

python enumerate()

python 内置函数enumerate()

enumerate用法

enumerate的简单使用

python中enumerate变量类型转换

python中enumerate()函数的用法