当前位置: 首页 > 面试题库 >

Python-迭代访问列表的最“ pythonic”方法是什么?

宓文斌
2023-03-14
问题内容

我有一个Python脚本,该脚本接受一个整数列表作为输入,我需要一次处理四个整数。不幸的是,我无法控制输入,或者将其作为四元素元组的列表传递。目前,我正在以这种方式对其进行迭代:

for i in xrange(0, len(ints), 4):
    # dummy op for example code
    foo += ints[i] * ints[i + 1] + ints[i + 2] * ints[i + 3]

不过,这看起来很像“C-think”,这让我怀疑有一种更像蟒蛇的方式来处理这种情况。列表在迭代后被丢弃,因此不需要保留它。也许这样更好?

while ints:
    foo += ints[0] * ints[1] + ints[2] * ints[3]
    ints[0:4] = []

不过,仍然感觉不太正确。


问题答案:

从Python的itertools文档的recipes部分修改:

from itertools import zip_longest

def grouper(iterable, n, fillvalue=None):
    args = [iter(iterable)] * n
    return zip_longest(*args, fillvalue=fillvalue)

示例
用伪代码保持示例简洁。

grouper('ABCDEFG', 3, 'x') --> 'ABC' 'DEF' 'Gxx'

注意:在Python 2上,请使用izip_longest代替zip_longest。



 类似资料:
  • 问题内容: 我有一个Python脚本,该脚本接受一个整数列表作为输入,我需要一次使用四个整数。不幸的是,我无法控制输入,或者将其作为四元素元组的列表传递。目前,我正在以这种方式对其进行迭代: 不过,它看起来很像“ C思维”,这使我怀疑还有一种处理这种情况的更Python的方法。列表在迭代后被丢弃,因此不需要保留。也许像这样会更好? 不过,还是不太“正确”。 问题答案: 从Python的iterto

  • 我有一个名为的DataFrame想要迭代列表并获得的值,但我得到了以下错误(如预期的那样)。知道我该怎么取消吗?

  • 假设我有3个要关闭的Scanner实例。 我可以做 对于每个扫描仪。 或者我可以做类似的事情 使用Java8有没有更简单的方法? 类似的东西?

  • 问题内容: 谁能建议我在python中导入模块的最pythonic方法是什么?让我解释一下- 我已经阅读了很多python代码,并发现了几种不同的方式来导入模块,或者更确切地说,是何时导入: 使用一个模块/几个模块,其中包括整个项目所需的所有导入(第三方模块),因此所有导入都集中在几个模块中,因此易于维护导入。当任何单个模块需要导入任何模块时,都会询问引用模块。例如,在我们的项目中,我们分离了名为

  • 问题内容: 我已经在我的个人计算机上运行了mssql 2005,并且我想在上面运行一些python脚本的数据库。我正在寻找一种对数据进行一些非常简单的访问的方法。我想运行一些select语句,处理数据,也许让python用结果保存一个文本文件。 不幸的是,即使我对python有点了解,对数据库也有点了解,但是我很难从阅读中分辨出库是否满足我的要求。理想情况下,我想要一种适用于其他版本的mssql的

  • 问题内容: 我这样做: 要么 我是Python的新手,所以我仍在探索语法,并且我想在此方面提供一些建议。 问题答案: 试试这个:Python属性 示例代码是: