zoukankan      html  css  js  c++  java
  • 索引值迭代-enumerate

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

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

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

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

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

     1 def parser_file(filename):
     2     with open(filename) as f:
     3         for line_no, line in enumerate(f):
     4             fields = line.split('=')
     5             try:
     6                 count = int(fields[0])
     7                 print(count)
     8             except ValueError as e:
     9                 print("line {0} parse error:[{1}]".format(line_no, e))
    10 
    11 
    12 def main():
    13     parser_file("test.txt")
    14 
    15 if __name__ == '__main__':
    16     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)
  • 相关阅读:
    DNS部署与安全
    DHCP部署与安全
    jenkins漏洞复现
    Apache Axis2 漏洞复现
    制作war包
    JBOOS 漏洞复现
    Tomcat漏洞复现
    编写登陆接口(2)
    学习使用新工具Pycharm
    while练习99乘法表
  • 原文地址:https://www.cnblogs.com/z-joshua/p/6495369.html
Copyright © 2011-2022 走看看