你想在迭代一个序列的同时跟踪正在被处理的元素索引?内置的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)

最新文章

  1. 通过setTimeout来取消因大量计算造成的网页卡顿
  2. git 远程库命令
  3. Flashback for MySQL 5.7
  4. 【bzoj2243】[SDOI2011]染色
  5. ACM/ICPC 之 网络流入门-Ford Fulkerson与SAP算法(POJ1149-POJ1273)
  6. 一步步构建自己的AngularJS(2)——scope之$watch及$digest
  7. ECJTU大一暑假集训
  8. JavaScript正则验证邮箱
  9. 基于Linux的oracle数据库管理 part6 (backup 相关的脚本)
  10. OpenFiler安装与基本配置
  11. Linux运维不可不知的性能监控和调试工具
  12. OCP-1Z0-051-题目解析-第33题
  13. 使用Java注解来简化你的代码
  14. Unity3D-Shader-复古电影荧幕特效
  15. BZOJ_3223: Tyvj 1729 文艺平衡树 _splay
  16. 字符串哈希及KMP
  17. Neo4j导入本地csv问题
  18. [NOIP 2014TG D1T3] 飞扬的小鸟
  19. Visual Studio 2017 插件扩展
  20. 微软职位内部推荐-Software Engineer

热门文章

  1. 环境配置之 Debug 和 Release - iOS
  2. 搭建Extjs框架(二)
  3. Matlab 编程入门(一):编程基础
  4. 19-3-5Python中列表、元组、以及range
  5. 数据库与python的连接
  6. 【解决】could not find an available, non-overlapping IPv4 address pool among the defaults to assign to the network
  7. 安装psutil时提示缺少python.h头文件(作记录)
  8. node.js使用Sequelize 操作mysql
  9. Spring : Spring Security
  10. php_Trait