如何从Python中的列表中读取两个重复的后续值?

时间:2017-01-18 00:35:35

标签: python list iteration

我有一个列表L = [1,2,3,4,5,6],我需要按如下方式检索对:

[1,2] , [2,3], [3,4], [4,5], [5,6]

我目前的解决方案是创建两个实用程序列表:

U1 = [1,2,3,4,5]
U2 = [2,3,4,5,6]

使用zip内置函数来获得所需的结果。

有没有更好的方法来实现同样的目标?

2 个答案:

答案 0 :(得分:3)

这就像你的实用程序列表的解决方案,但有点短:

L = [1,2,3,4,5,6]

for i in zip(L, L[1:]):
    print(list(i))
# [1, 2]
# [2, 3]
# [3, 4]
# [4, 5]
# [5, 6]

这可以正常工作,因为zip会在一次迭代耗尽后立即停止。

您还可以使用map立即转换项目:

for i in map(list, zip(L, L[1:])):
    print(i)

或者如果您希望将整个事物转换为列表列表:

list(map(list, zip(L, L[1:])))
# [[1, 2], [2, 3], [3, 4], [4, 5], [5, 6]]

如果您的列表真的很长,创建一个新列表(因为我用[1:]切片)可能会很昂贵,那么您可以使用itertools.islice来避免这种情况:

for i in zip(L, islice(L, 1, None)):
    print(list(i))

答案 1 :(得分:1)

使用列表理解:

[[L[i], L[i+1]] for i in range(len(L)-1)]

通常,列表推导将比python

中的for循环快得多