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 相关文章推荐
50行代码实现贪吃蛇(具体思路及代码)
Apr 27 Python
Python实现栈的方法
May 26 Python
python 给DataFrame增加index行名和columns列名的实现方法
Jun 08 Python
python匹配两个短语之间的字符实例
Dec 25 Python
解决python写入带有中文的字符到文件错误的问题
Jan 31 Python
用Python解决x的n次方问题
Feb 08 Python
python实现得到当前登录用户信息的方法
Jun 21 Python
python返回数组的索引实例
Nov 28 Python
Python sys模块常用方法解析
Feb 20 Python
Python日志处理模块logging用法解析
May 19 Python
python读取hdfs并返回dataframe教程
Jun 05 Python
浅谈django框架集成swagger以及自定义参数问题
Jul 07 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
prototype 1.5相关知识及他人笔记
2006/12/16 Javascript
Iframe thickbox2.0使用的方法
2009/03/05 Javascript
jquery插件如何使用 jQuery操作Cookie插件使用介绍
2012/12/15 Javascript
固定背景实现的背景滚动特效示例分享
2013/05/19 Javascript
js调用AJAX时Get和post的乱码解决方法
2013/06/04 Javascript
JavaScript网页定位详解
2014/01/13 Javascript
JS+CSS实现DIV层的展开、收缩效果
2016/01/28 Javascript
JavaScript动态生成二维码图片
2016/04/20 Javascript
BootStrap点击下拉菜单项后显示一个新的输入框实现代码
2016/05/16 Javascript
JavaScript实现翻页功能(附效果图)
2017/02/16 Javascript
基于JS实现仿百度百家主页的轮播图效果
2017/03/06 Javascript
在百度搜索结果中去除掉一些网站的资料(通过js控制不让显示)
2017/05/02 Javascript
微信小程序request请求后台接口php的实例详解
2017/09/20 Javascript
Node.js Express安装与使用教程
2018/05/11 Javascript
element-ui使用导航栏跳转路由的用法详解
2018/08/22 Javascript
Vue-Router基础学习笔记(小结)
2018/10/15 Javascript
详解puppeteer使用代理
2018/12/27 Javascript
Vue Components 数字键盘的实现
2019/09/18 Javascript
解决Antd 里面的select 选择框联动触发的问题
2020/10/24 Javascript
在Python的Django框架中为代码添加注释的方法
2015/07/16 Python
解决python3在anaconda下安装caffe失败的问题
2017/06/15 Python
基于python select.select模块通信的实例讲解
2017/09/21 Python
Python 使用PIL中的resize进行缩放的实例讲解
2018/08/03 Python
Python队列、进程间通信、线程案例
2019/10/25 Python
Python自动化完成tb喵币任务的操作方法
2019/10/30 Python
django-csrf使用和禁用方式
2020/03/13 Python
基于python实现ROC曲线绘制广场解析
2020/06/28 Python
解决redis与Python交互取出来的是bytes类型的问题
2020/07/16 Python
CSS3色彩模式有哪些?CSS3 HSL色彩模式的定义
2016/04/26 HTML / CSS
来自世界各地的饮料:Flavourly
2019/05/06 全球购物
店长职务说明书
2014/02/04 职场文书
秋天的怀念教学反思
2014/04/28 职场文书
小学优秀教师事迹材料
2014/12/16 职场文书
2015年第十五个全民国防教育日宣传活动方案
2015/05/06 职场文书
JavaScript展开运算符和剩余运算符的区别详解
2022/02/18 Javascript
Python中的 No Module named ***问题及解决
2022/07/23 Python