What is the most quot;pythonicquot; way to iterate over a list in chunks?(什么是最“蟒蛇?以块为单位迭代列表的方法?)
问题描述
我有一个 Python 脚本,它以整数列表作为输入,我需要一次处理四个整数.不幸的是,我无法控制输入,否则我会将其作为四元素元组列表传入.目前,我正在以这种方式对其进行迭代:
I have a Python script which takes as input a list of integers, which I need to work with four integers at a time. Unfortunately, I don't have control of the input, or I'd have it passed in as a list of four-element tuples. Currently, I'm iterating over it this way:
for i in range(0, len(ints), 4):
# dummy op for example code
foo += ints[i] * ints[i + 1] + ints[i + 2] * ints[i + 3]
不过,它看起来很像C-think",这让我怀疑有一种更 Python 的方式来处理这种情况.该列表在迭代后被丢弃,因此不需要保留.也许这样的事情会更好?
It looks a lot like "C-think", though, which makes me suspect there's a more pythonic way of dealing with this situation. The list is discarded after iterating, so it needn't be preserved. Perhaps something like this would be better?
while ints:
foo += ints[0] * ints[1] + ints[2] * ints[3]
ints[0:4] = []
还是不太感觉"对,不过.:-/
Still doesn't quite "feel" right, though. :-/
相关问题:怎么做你在 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
.
Note: on Python 2 use izip_longest
instead of zip_longest
.
这篇关于什么是最“蟒蛇"?以块为单位迭代列表的方法?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:什么是最“蟒蛇"?以块为单位迭代列表的方法?
基础教程推荐
- 合并具有多索引的两个数据帧 2022-01-01
- 如何在 Python 中检测文件是否为二进制(非文本)文 2022-01-01
- 使用Python匹配Stata加权xtil命令的确定方法? 2022-01-01
- Python 的 List 是如何实现的? 2022-01-01
- 将 YAML 文件转换为 python dict 2022-01-01
- 哪些 Python 包提供独立的事件系统? 2022-01-01
- 使用 Google App Engine (Python) 将文件上传到 Google Cloud Storage 2022-01-01
- 使 Python 脚本在 Windows 上运行而不指定“.py";延期 2022-01-01
- 症状类型错误:无法确定关系的真值 2022-01-01
- 如何在Python中绘制多元函数? 2022-01-01