索引值迭代-enumerate
2024-09-04 14:45:09
你想在迭代一个序列的同时跟踪正在被处理的元素索引?内置的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)
最新文章
- 通过setTimeout来取消因大量计算造成的网页卡顿
- git 远程库命令
- Flashback for MySQL 5.7
- 【bzoj2243】[SDOI2011]染色
- ACM/ICPC 之 网络流入门-Ford Fulkerson与SAP算法(POJ1149-POJ1273)
- 一步步构建自己的AngularJS(2)——scope之$watch及$digest
- ECJTU大一暑假集训
- JavaScript正则验证邮箱
- 基于Linux的oracle数据库管理 part6 (backup 相关的脚本)
- OpenFiler安装与基本配置
- Linux运维不可不知的性能监控和调试工具
- OCP-1Z0-051-题目解析-第33题
- 使用Java注解来简化你的代码
- Unity3D-Shader-复古电影荧幕特效
- BZOJ_3223: Tyvj 1729 文艺平衡树 _splay
- 字符串哈希及KMP
- Neo4j导入本地csv问题
- [NOIP 2014TG D1T3] 飞扬的小鸟
- Visual Studio 2017 插件扩展
- 微软职位内部推荐-Software Engineer
热门文章
- 环境配置之 Debug 和 Release - iOS
- 搭建Extjs框架(二)
- Matlab 编程入门(一):编程基础
- 19-3-5Python中列表、元组、以及range
- 数据库与python的连接
- 【解决】could not find an available, non-overlapping IPv4 address pool among the defaults to assign to the network
- 安装psutil时提示缺少python.h头文件(作记录)
- node.js使用Sequelize 操作mysql
- Spring : Spring Security
- php_Trait