迭代访问列表的最“ pythonic”方法是什么?
我有一个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思维”,这使我怀疑还有一种处理这种情况的更Python的方法。 该列表在迭代后被丢弃,因此不需要保留。 也许这样的事情会更好? while ints: foo += ints[0] * ints[1] + ints[2] * ints[3] ints[0:4] = [] 不过,还是不太“正确”。 :-/ 相关问题: 如何在Python中将列表分成均匀大小的块? #1楼 此问题的理想解决方案适用于迭代器(而不仅仅是序列)。 它也应该很快。 这是itertools文档提供的解决方案: def grouper(n, iterable, fillvalue=None): #"grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx" args = [iter(iterable)] * n return itertools.izip