python同时遍历数组的索引和值的实例


Posted in Python onNovember 15, 2018

你想在迭代一个序列的同时跟踪正在被处理的元素索引。

获取索引

内置的 enumerate() 函数可以很好的解决这个问题:

>>> my_list = ['a', 'b', 'c']
>>> for idx, val in enumerate(my_list):
...  print(idx, val)
...
0 a
1 b
2 c

行号从1开始

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

>>> my_list = ['a', 'b', 'c']
>>> for idx, val in enumerate(my_list, 1):
...  print(idx, val)
...
1 a
2 b
3 c

行号定位

这种情况在你遍历文件时想在错误消息中使用行号定位时候非常有用:

def parse_data(filename):
 with open(filename, 'rt') as f:
  for lineno, line in enumerate(f, 1):
   fields = line.split()
   try:
    count = int(fields[1])
    ...
   except ValueError as e:
    print('Line {}: Parse error: {}'.format(lineno, e))

enumerate() 对于跟踪某些值在列表中出现的位置是很有用的。 所以,如果你想将一个文件中出现的单词映射到它出现的行号上去,可以很容易的利用 enumerate() 来完成:

word_summary = defaultdict(list)

with open('myfile.txt', 'r') as f:
 lines = f.readlines()

for idx, line in enumerate(lines):
 # Create a list of words in current line
 words = [w.strip().lower() for w in line.split()]
 for word in words:
  word_summary[word].append(idx)

如果你处理完文件后打印 word_summary ,会发现它是一个字典(准确来讲是一个 defaultdict ), 对于每个单词有一个 key ,每个 key 对应的值是一个由这个单词出现的行号组成的列表。 如果某个单词在一行中出现过两次,那么这个行号也会出现两次, 同时也可以作为文本的一个简单统计。

计数变量

当你想额外定义一个计数变量的时候,使用 enumerate() 函数会更加简单。你可能会像下面这样写代码:

lineno = 1
for line in f:
 # Process line
 ...
 lineno += 1

但是如果使用 enumerate() 函数来代替就显得更加优雅了:

for lineno, line in enumerate(f):
 # Process line
 ...

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

陷阱

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

data = [ (1, 2), (3, 4), (5, 6), (7, 8) ]

# Correct!
for n, (x, y) in enumerate(data):
 ...
# Error!
for n, x, y in enumerate(data):
 ...

参考:

https://docs.python.org/2/library/functions.html#enumerate

以上这篇python同时遍历数组的索引和值的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python正则匹配抓取豆瓣电影链接和评论代码分享
Dec 27 Python
Python入门篇之面向对象
Oct 20 Python
Python脚本实现虾米网签到功能
Apr 12 Python
python生成随机图形验证码详解
Nov 08 Python
python数字图像处理之高级滤波代码详解
Nov 23 Python
python解析html提取数据,并生成word文档实例解析
Jan 22 Python
Python合并多个Excel数据的方法
Jul 16 Python
python将邻接矩阵输出成图的实现
Nov 21 Python
tensorflow pb to tflite 精度下降详解
May 25 Python
keras使用Sequence类调用大规模数据集进行训练的实现
Jun 22 Python
Python 制作查询商品历史价格的小工具
Oct 20 Python
python 实现简易的记事本
Nov 30 Python
python保存二维数组到txt文件中的方法
Nov 15 #Python
使用Python的toolz库开始函数式编程的方法
Nov 15 #Python
Python中is和==的区别详解
Nov 15 #Python
Python中垃圾回收和del语句详解
Nov 15 #Python
Matplotlib中文乱码的3种解决方案
Nov 15 #Python
Python使用sorted对字典的key或value排序
Nov 15 #Python
python并发和异步编程实例
Nov 15 #Python
You might like
深入了解php4(2)--重访过去
2006/10/09 PHP
dedecms 制作模板中使用的全局标记图文教程
2007/03/11 PHP
PHP导入导出Excel代码
2015/07/07 PHP
浅谈JavaScript中定义变量时有无var声明的区别
2014/08/18 Javascript
jQuery分组选择器用法实例
2014/12/23 Javascript
JavaScript中for循环的使用详解
2015/06/03 Javascript
函数window.open实现关闭所有的子窗口
2015/08/03 Javascript
JavaScript中关联原型链属性特性
2016/02/13 Javascript
JavaScript实现简洁的俄罗斯方块完整实例
2016/03/01 Javascript
ReactNative实现图片上传功能的示例代码
2017/07/11 Javascript
详解vue axios中文文档
2017/09/12 Javascript
angular4强制刷新视图的方法
2018/10/09 Javascript
最简单的vue消息提示全局组件的方法
2019/06/16 Javascript
Vue程序化的事件监听器(实例方案详解)
2020/01/07 Javascript
JavaScript点击按钮生成4位随机验证码
2021/01/28 Javascript
[01:28]国服启动器接入蒸汽平台操作流程视频
2021/03/11 DOTA
Python工程师面试题 与Python Web相关
2016/01/14 Python
Python实现的多线程http压力测试代码
2017/02/08 Python
python机器学习理论与实战(一)K近邻法
2021/01/28 Python
详解Python下载图片并保存本地的两种方式
2019/05/15 Python
python绘制无向图度分布曲线示例
2019/11/22 Python
opencv-python 提取sift特征并匹配的实例
2019/12/09 Python
Django实现从数据库中获取到的数据转换为dict
2020/03/27 Python
Python实现封装打包自己写的代码,被python import
2020/07/12 Python
香港太阳眼镜网上商店:SmartBuyGlasses香港
2016/07/22 全球购物
淘宝中秋节活动方案
2014/01/31 职场文书
大二学习计划书范文
2014/04/27 职场文书
财务情况说明书范文
2014/05/06 职场文书
如何写求职信
2014/05/24 职场文书
2014企业领导班子四风对照检查材料思想汇报
2014/09/17 职场文书
2014年物业公司工作总结
2014/11/22 职场文书
学历证明样本
2015/06/16 职场文书
装修公司管理制度
2015/08/05 职场文书
Pytest allure 命令行参数的使用
2021/04/18 Python
Css预编语言及区别详解
2021/04/25 HTML / CSS
sentinel支持的redis高可用集群配置详解
2022/04/01 Redis