你想在迭代一个序列的同时跟踪正在被处理的元素索引?内置的enumerate() 函数可以很好的解决这个问题:

 list_c = ['a', 'b', 'c']
for i, c in enumerate(list_c):
print(i, c)

为了按传统行号输出(行号从1 开始),你可以传递一个开始参数:

 list_c = ['a', 'b', 'c']
for i, c in enumerate(list_c, 1):
print(i, c)

利用enumerate()函数,在你遍历文件时想在错误消息中使用行号定位时候非常有用:

 def parser_file(filename):
with open(filename) as f:
for line_no, line in enumerate(f):
fields = line.split('=')
try:
count = int(fields[0])
print(count)
except ValueError as e:
print("line {0} parse error:[{1}]".format(line_no, e)) def main():
parser_file("test.txt") if __name__ == '__main__':
main()

enumerate() 函数返回的是一个enumerate 对象实例,它是一个迭代器,返回连续的包含一个计数和一个值的元组,元组中的值通过在传入序列上调用next() 返回。

还有一点可能并不很重要,但是也值得注意,有时候当你在一个已经解压后的元组序列上使用enumerate() 函数时很容易调入陷阱。你得像下面正确的方式这样写:

t_list = [(1, 2), (3, 4), (5, 6)]

# Error!
for i, x, y in enumerate(t_list, 1):
print("{0}:({1}, {2})".format(i, x, y)) # Correct!
for i, (x, y) in enumerate(t_list, 1):
print("{0}:({1}, {2})".format(i, x, y)

索引值迭代-enumerate的更多相关文章

  1. for 循环语句 (enumerate枚举,据说直接写出索引值)

    for i in ***: 今天上课看到alex用了 for index,i in enumerate(list): print(index,i) (enumerate好像可以设置开头序号enumer ...

  2. 深度学习实践-物体检测-faster-RCNN(原理和部分代码说明) 1.tf.image.resize_and_crop(根据比例取出特征层,进行维度变化) 2.tf.slice(数据切片) 3.x.argsort()(对数据进行排列,返回索引值) 4.np.empty(生成空矩阵) 5.np.meshgrid(生成二维数据) 6.np.where(符合条件的索引) 7.tf.gather取值

    1. tf.image.resize_and_crop(net, bbox, 256, [14, 14], name)  # 根据bbox的y1,x1,y2,x2获得net中的位置,将其转换为14*1 ...

  3. Python 统计列表中重复元素的个数并返回其索引值

    需求:统计列表list1中元素3的个数,并返回每个元素的索引 list1 = [3, 3, 8, 9, 2, 10, 6, 2, 8, 3, 4, 5, 5, 4, 1, 5, 9, 7, 10, 2 ...

  4. *使用while循环遍历数组创建索引和自增索引值

    package com.chongrui.test;/* *使用while循环遍历数组 *  *  * */public class test {    public static void main ...

  5. 2015.4.19 为什么footer下a的索引值那么大

    1.问题demo:为什么footer下a的索引值那么大,index不是查找兄弟级别的元素么?而且还限定了范围在footer下的a的情况下. 解决方法:alert( $("#footer a& ...

  6. jQuery 使用索引值容易出错的一个地方

    先看代码 $('input:eq(2)').attr('value', function(index, val){ console.log(index); //输出0 }); 问:当前元素的索引值,不 ...

  7. ASP.NET中gridview获取当前行的索引值

    在用GridView控件时,我们经常会碰到获取当前行的索引,通过索引进行许多操作.例如,可以获得当前行某一个控件元素:设置某一元素的值等等.下面结合实例介绍几种获得GridView当前行索引值的方法. ...

  8. js实现点击<li>标签弹出其索引值

    据说这是一道笔试题,以下是代码,没什么要文字叙述的,就是点击哪个<li>弹出哪个<li>的索引值即可: <html> <head> <style& ...

  9. JS初学之-自定义属性(索引值)

    重点:1.添加索引值的作用:建立匹配.对应的关系. 比如:使每一个按钮对应数组里的每一张图,arrImg[this.index]. 2.不要在for循环的函数里面使用i. 3.添加索引值的方法aBtn ...

随机推荐

  1. CGAffineTransform 视频旋转(转)

    记录下视频旋转 ////////////////////////////////////////////// - (void)test:(NSURL *)url transformUrl:(NSURL ...

  2. Head First Java学习笔记

    1.基本概念 1.1.工作方式 源代码(.java)---编译器(执行javac程序)---产生字节码(.class与平台无关)---JAVA虚拟机(JVM,读取与执行字节码) 1.2.汇编语言是对基 ...

  3. BZOJ1023: [SHOI2008]cactus仙人掌图(仙人掌dp)

    Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 3467  Solved: 1438[Submit][Status][Discuss] Descripti ...

  4. 可以提高php编程效率的20个要点

    整理了可以提高php编程效率的20个要点,发博客记录一下,需要的朋友可以参考.    1.如果能将类的方法定义成static,就尽量定义成static,它的速度会提升将近4倍. 2.$row['id' ...

  5. Flume采集目录及文件到HDFS案例

    采集目录到HDFS 使用flume采集目录需要启动hdfs集群 vi spool-hdfs.conf # Name the components on this agent a1.sources = ...

  6. python 查找元素 获取元素信息 元素交互操作 执行JavaScript

    from selenium import webdriver browser = webdriver.Firefox() browser.get("https://tieba.baidu.c ...

  7. Python中可变数据类型和不可变数据类型

    首先,我们需要知道在python中哪些是可变数据类型,哪些是不可变数据类型.可变数据类型:列表list和字典dict:不可变数据类型:整型int.浮点型float.字符串型string和元组tuple ...

  8. epoll 服务端 ET模式

    windows下IOCP, linux下 epoll. epoll模型其实也是一个同步模型,ET是epoll里面的一种模式,叫 边缘触发. 个人理解,类似于 windows下的事件选择模型.代码如下: ...

  9. BZOJ3209(luogu 4317)花神的数论题题解

    题目 设 sum(i) 表示 i 的二进制表示中 1 的个数.给出一个正整数 N ,花神要问你 派(Sum(i)),也就是 sum(1)—sum(N) 的乘积(n<=1e15). 分析 好吧,一 ...

  10. ant-design form

    表单配置 示例代码 import { Form } from 'antd'; const FormItem = Form.Item; class NormalLoginForm extends Rea ...