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)
原文地址:https://www.cnblogs.com/qianslup/p/12149037.html