码迷,mamicode.com
首页 > 编程语言 > 详细

enumerate()

时间:2020-01-10 01:08:50      阅读:100      评论:0      收藏:0      [点我收藏+]

标签:element   结果   函数   ble   lazy   使用   seq   while   序列   

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

标签:element   结果   函数   ble   lazy   使用   seq   while   序列   

原文地址:https://www.cnblogs.com/qianslup/p/12149037.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!