从列表L创建(L [i],L [i + 1])元组列表

时间:2014-04-11 07:39:40

标签: python

假设我们有一个列表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]))

或同等的理解。

4 个答案:

答案 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)]