如何将一个列表转换成具有列表中的成对元素的新列表的最佳方法?

时间:2018-12-13 14:49:40

标签: python python-3.x list

我的问题是将列表[1,2,3,4,5]转换为[[1, 2], [2, 3], [3, 4], [4, 5]]

我通过以下方式解决了该问题:

a = [1,2,3,4,5]

result = [[e, a[idx + 1]] for idx, e in enumerate(a) if idx + 1 != len(a)]

最好的方法是什么?

2 个答案:

答案 0 :(得分:2)

您可以使用zip

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

res = list(zip(L, L[1:]))

这给出了元组列表。如果列表列表是严格要求,则可以使用map

res = list(map(list, zip(L, L[1:])))

print(res)

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

有关问题的通用解决方案,请参见Rolling or sliding window iterator

答案 1 :(得分:1)

不知道“最佳”方法,但这是另一种方法。

d = [1,2,3,4,5]

results = [[d[i], d[i+1]] for i in range(len(d) - 1)]
print(results)
# OUTPUT
# [[1, 2], [2, 3], [3, 4], [4, 5]]