如何将列表分组为包含顺序的n元组

use*_*523 2 python grouping list

可能重复:
在Python中将列表迭代为对(当前,下一个)

我有一个这样的列表:

list = [A, B, C, D, E, F, G]
Run Code Online (Sandbox Code Playgroud)

如何对此进行分组以获得以下Python输出

[(A,B), (B,C), (C, D), (D,E), (E,F), (F,G)]
Run Code Online (Sandbox Code Playgroud)

所以这些值按secound值分组但订单仍然保留......

And*_*ark 5

尝试使用zip():

zip(lst, lst[1:])
Run Code Online (Sandbox Code Playgroud)

此外,您不应使用该名称list,因为您将覆盖内置列表类型.

例:

>>> lst = ['A', 'B', 'C', 'D', 'E', 'F', 'G']
>>> zip(lst, lst[1:])
[('A', 'B'), ('B', 'C'), ('C', 'D'), ('D', 'E'), ('E', 'F'), ('F', 'G')]
Run Code Online (Sandbox Code Playgroud)

对于可以使用生成器或其他一次性迭代的版本,您可以使用itertools文档中成对配方:

from itertools import tee, izip

def pairwise(iterable):
    "s -> (s0,s1), (s1,s2), (s2, s3), ..."
    a, b = tee(iterable)
    next(b, None)
    return izip(a, b)
Run Code Online (Sandbox Code Playgroud)