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

 更新时间:2018年11月15日 14:12:06   作者:lilongsy  
今天小编就为大家分享一篇python同时遍历数组的索引和值的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

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

获取索引

内置的 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 中 Elias Delta 编码详情

    Python 中 Elias Delta 编码详情

    这篇文章主要介绍了Python 中 Elias Delta 编码,下面的文章我们将使用 python 实现 Elias Delta 编码。具体详细内容,需要的朋友可以参考一下
    2021-11-11
  • Centos5.x下升级python到python2.7版本教程

    Centos5.x下升级python到python2.7版本教程

    这篇文章主要介绍了Centos5.x下升级python到python2.7版本教程,本文使用编译安装方式,并配置了一系列需要更改的配置项,需要的朋友可以参考下
    2015-02-02
  • 详解python读取和输出到txt

    详解python读取和输出到txt

    这篇文章主要介绍了python读取和输出到txt,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • python io.BytesIO简介及示例代码

    python io.BytesIO简介及示例代码

    io.BytesIO 是 Python 内置的一个 I/O 类,用于在内存中读写二进制数据,这篇文章主要介绍了python io.BytesIO简要介绍及示例,需要的朋友可以参考下
    2023-05-05
  • python 接收处理外带的参数方法

    python 接收处理外带的参数方法

    今天小编就为大家分享一篇python 接收处理外带的参数方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • Python 分享10个PyCharm技巧

    Python 分享10个PyCharm技巧

    这篇文章主要介绍了Python 分享10个PyCharm技巧,今天要跟大家分享几个PyCharm小技巧,帮助大家提升工作效率!,需要的朋友可以参考下
    2019-07-07
  • Python使用Pandas库实现MySQL数据库的读写

    Python使用Pandas库实现MySQL数据库的读写

    这篇文章主要介绍了Python使用Pandas库实现MySQL数据库的读写 ,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • 如何使用pytorch实现LocallyConnected1D

    如何使用pytorch实现LocallyConnected1D

    由于LocallyConnected1D是Keras中的函数,为了用pytorch实现LocallyConnected1D并在960×33的数据集上进行训练和验证,本文分步骤给大家介绍如何使用pytorch实现LocallyConnected1D,感兴趣的朋友一起看看吧
    2023-09-09
  • 利用Python进行数据可视化的实例代码

    利用Python进行数据可视化的实例代码

    数据可视化和数据挖掘都是探索数据和分析数据的一种手段,下面这篇文章主要给大家介绍了关于如何利用Python进行数据可视化的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2021-09-09
  • Python超简单容易上手的画图工具库(适合新手)

    Python超简单容易上手的画图工具库(适合新手)

    这篇文章主要给大家介绍了关于Python超简单容易上手的画图工具库的相关资料,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05

最新评论