首页 > 后端开发 > Python教程 > 如何在 Python 中迭代成对或成组的列表?

如何在 Python 中迭代成对或成组的列表?

Susan Sarandon
发布: 2024-12-25 10:53:50
原创
182 人浏览过

How Can I Iterate Over Lists in Pairs or Groups in Python?

列表上的成对迭代

成对迭代元素是操作列表时的常见要求。然而,Python 中的循环和列表推导式的标准并未提供成对遍历的内置解决方案。

成对实现

为了克服此限制,可以实现称为pairwise() 的自定义函数。此函数接受可迭代对象作为输入并返回元素对。

def pairwise(iterable):
    "s -> (s0, s1), (s2, s3), (s4, s5), ..."
    a = iter(iterable)
    return zip(a, a)
登录后复制

用法

使用此pairwise() 函数,您可以对元素进行迭代,如下所示如下:

l = [1, 2, 3, 4, 5, 6]

for x, y in pairwise(l):
    print("{} + {} = {}".format(x, y, x + y))
登录后复制

输出:

1 + 2 = 3
3 + 4 = 7
5 + 6 = 11
登录后复制

广义分组

对于需要迭代的情况任何大小的组中的元素,可以使用更通用的函数 grouped()

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("{} + {} = {}".format(x, y, x + y))
登录后复制

使用 Mypy 进行类型检查

对于希望执行的 Python 3 用户使用 Mypy 进行类型检查,grouped() 函数可以注释为如下:

from typing import Iterable, Tuple, TypeVar

T = TypeVar("T")

def grouped(iterable: Iterable[T], n=2) -> Iterable[Tuple[T, ...]]:
    """s -> (s0,s1,s2,...sn-1), (sn,sn+1,sn+2,...s2n-1), ..."""
    return zip(*[iter(iterable)] * n)
登录后复制

以上是如何在 Python 中迭代成对或成组的列表?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板