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值分组但订单仍然保留......
尝试使用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)