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实现删除Android工程中的冗余字符串
Jan 19 Python
python flask中静态文件的管理方法
Mar 20 Python
Python requests库用法实例详解
Aug 14 Python
python 调用钉钉机器人的方法
Feb 20 Python
啥是佩奇?使用Python自动绘画小猪佩奇的代码实例
Feb 20 Python
Python Numpy计算各类距离的方法
Jul 05 Python
通过python调用adb命令对App进行性能测试方式
Apr 23 Python
使用pyplot.matshow()函数添加绘图标题
Jun 16 Python
使用OpenCV对车道进行实时检测的实现示例代码
Jun 19 Python
keras分类之二分类实例(Cat and dog)
Jul 09 Python
Django生成数据库及添加用户报错解决方案
Oct 09 Python
Python Django获取URL中的数据详解
Nov 01 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
咖啡店都有些什么常规豆子呢?有什么风味在里面
2021/03/04 咖啡文化
PHP4(windows版本)中的COM函数
2006/10/09 PHP
JavaScript 学习笔记(四)
2009/12/31 Javascript
javascript URL编码和解码使用说明
2010/04/12 Javascript
使用javascript实现有效时间的控制,并显示将要过期的时间
2014/01/02 Javascript
javascript 获取网页标题代码实例
2014/01/22 Javascript
编写高效jQuery代码的4个原则和5个技巧
2014/04/24 Javascript
使用jsonp完美解决跨域问题
2014/11/27 Javascript
jQuery实现鼠标划过修改样式的方法
2015/04/14 Javascript
JS实现部分HTML固定页面顶部随屏滚动效果
2015/12/24 Javascript
深入理解jquery中的事件与动画
2016/05/24 Javascript
node.js中debug模块的简单介绍与使用
2017/04/25 Javascript
Node.js对MongoDB数据库实现模糊查询的方法
2017/05/03 Javascript
react-router v4如何使用history控制路由跳转详解
2018/01/09 Javascript
使用Vue.js开发微信小程序开源框架mpvue解析
2018/03/20 Javascript
基于Vue实现拖拽效果
2018/04/27 Javascript
详解Python中列表和元祖的使用方法
2015/04/25 Python
Python获取系统默认字符编码的方法
2015/06/04 Python
编写Python爬虫抓取暴走漫画上gif图片的实例分享
2016/04/20 Python
利用Python爬虫给孩子起个好名字
2017/02/14 Python
Python安装与基本数据类型教程详解
2019/05/29 Python
详解Django admin高级用法
2019/11/06 Python
python3中关于excel追加写入格式被覆盖问题(实例代码)
2020/01/10 Python
TensorFlow实现批量归一化操作的示例
2020/04/22 Python
python:解析requests返回的response(json格式)说明
2020/04/30 Python
浅谈Python3多线程之间的执行顺序问题
2020/05/02 Python
Python字符串对齐、删除字符串不需要的内容以及格式化打印字符
2021/01/23 Python
英国建筑用品在线:Building Supplies Online(BSO)
2018/04/30 全球购物
职业技术学校毕业生推荐信
2013/12/03 职场文书
毕业生实习鉴定
2013/12/11 职场文书
完整版商业计划书
2014/09/15 职场文书
幼儿园安全教育月活动总结
2015/05/08 职场文书
食品安全责任书范本
2015/05/09 职场文书
2016年庆“七一”主题党日活动总结
2016/04/05 职场文书
Python爬虫之爬取二手房信息
2021/04/27 Python
在项目中使用redis做缓存的一些思路
2021/09/14 Redis