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

Python 从列表L创建(L[i],L[i+;1])元组列表,python,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])) 或同等理解。您可以使用内置的zip函数:zip(L,L[1:]) 尝试: 这应该可以做到 注意 list(zip(l, l[1:])) 同样有效,因为zip切割的是

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

或同等理解。

您可以使用内置的
zip
函数:
zip(L,L[1:])

尝试:

这应该可以做到

注意

list(zip(l, l[1:]))
同样有效,因为zip切割的是最长的家伙,但它不太明确

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:])

这是一种使用列表理解的简单方法,同样有效,尽管我不确定使用
zip
是否更快

L = [1,2,3,4,5]
[(L[i], L[i+1]) for i in range(len(L) - 1)]

正是我想要的。非常感谢。有史以来最快的。。。。。。。太棒了……我发现第二个更清晰,而且永远不会想到写第一个,即使它是等效的。问题提到“T=[(1,2),(2,3),(3,4),(4,5)],对我来说,可视检查显示每个元组的第一个元素是l;第二个是l[1:]中的元素。通常有两种方法来看待它,如果您不熟悉zip函数,我认为第一种方法更清晰,因为第一列中缺少最后一个元素。你需要知道拉链的剪裁(还有拉链)哦,我知道拉链。(我写了这篇博文的一个方面:)。我只是想知道描述的哪一方面让你觉得你的第一个答案更好。您解释说这是由于考虑了最后的因素。同样有效。我猜这是一个例子,是一个花瓶还是两张脸互相看着:
oL = zip(L, L[1:])
L = [1,2,3,4,5]
[(L[i], L[i+1]) for i in range(len(L) - 1)]