迭代列表中的成对元素
迭代列表时,我们经常遇到需要访问两个元素的情况一次。为了解决这个问题,我们可以利用成对迭代的概念。
Python 的内置 zip() 函数可以在这方面为我们提供帮助。 pairwise() 或 grouped() 方法使用可迭代对象并生成连续的二元素子序列。下面是我们如何实现它:
def pairwise(iterable): "s -> (s0, s1), (s2, s3), (s4, s5), ..." a = iter(iterable) return zip(a, a)
使用这个函数,让我们考虑列表 [1, 2, 3, 4, 5, 6]。演示成对迭代:
for x, y in pairwise(l): print("%d + %d = %d" % (x, y, x + y))
这将产生以下输出:
1 + 2 = 3 3 + 4 = 7 5 + 6 = 11
或者,grouped() 函数允许我们一次迭代 n 个元素。这是一个实现:
def grouped(iterable, n=2): "s -> (s0,s1,s2,...sn-1), (sn,sn+1,sn+2,...s2n-1), (s2n,s2n+1,s2n+2,...s3n-1), ..." return zip(*[iter(iterable)] * n)
例如,将 n 设置为 3,我们可以一次迭代三个元素:
for x, y, z in grouped(l, 3): print("%d + %d + %d = %d" % (x, y, z, x + y + z))
这种方法非常高效,因为它迭代仅列出一次,无需中间列表。
以上是如何迭代 Python 列表中的元素对(或组)?的详细内容。更多信息请关注PHP中文网其他相关文章!