假设我们有一个列表L = [1,2,3,4,5]
。是否有一种干净的方法来制作以下形式的元组列表:T = [(1,2),(2,3),(3,4),(4,5)]
?
如果有更好的替代
,那就太好了 T = []
for i in range(len(L) - 1):
T.append((L[i], L[i+1]))
或同等的理解。
答案 0 :(得分:10)
您可以使用内置的zip
功能:zip(L, L[1:])
In [4]: L = [1,2,3,4,5]
In [5]: zip(L, L[1:])
Out[5]: [(1, 2), (2, 3), (3, 4), (4, 5)]
答案 1 :(得分:2)
尝试:
list(zip(l[:-1], l[1:]))
这应该这样做。
请注意
list(zip(l, l[1:]))
同样有效,因为zip会削减最长的人,但不那么明确。
答案 2 :(得分:0)
In [15]: L = [1,2,3,4,5]
In [16]: oL = [(x, y) for x, y in zip(L, L[1:])]
In [17]: oL
Out[17]: [(1, 2), (2, 3), (3, 4), (4, 5)]
或者只是
oL = zip(L, L[1:])
答案 3 :(得分:0)
使用列表理解的一种天真的方法,这也可以,但我不确定使用zip
是否更快。
L = [1,2,3,4,5]
[(L[i], L[i+1]) for i in range(len(L) - 1)]