迭代列表中的每两个元素
在 Python 中,迭代列表通常涉及使用 for 循环或列表理解。但是,当您需要一起访问每两个元素时,标准方法可能不够。
要迭代列表中的每对元素,可以使用 pairwise()实现:
def pairwise(iterable): "s -> (s0, s1), (s2, s3), (s4, s5), ..." a = iter(iterable) return zip(a, a) l = [1, 2, 3, 4, 5, 6] for x, y in pairwise(l): print(f"{x} + {y} = {x + y}")
此函数迭代列表两次,将每个元素与下一个元素配对。它生成类似于以下内容的输出:
1 + 2 = 3 3 + 4 = 7 5 + 6 = 11
对于更通用的解决方案,请考虑 grouped() 函数,它允许您迭代 n 个元素的组:
def grouped(iterable, n): "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) for x, y in grouped(l, 2): print(f"{x} + {y} = {x + y}")
此函数接受列表和组大小作为参数,并返回一个生成元素组的迭代器。例如,调用 grouped([1, 2, 3, 4, 5, 6], 3) 将产生:
(1, 2, 3) (4, 5, 6)
在 Python 2 中,您可以使用 出于兼容性目的,izip 而不是 zip。
这些方法提供高效灵活的方式来迭代列表中的元素,允许您根据需要成对或成组地处理它们。
以上是如何迭代 Python 列表中的元素对或元素组?的详细内容。更多信息请关注PHP中文网其他相关文章!