按以下方式划分列表

时间:2018-12-28 00:35:42

标签: python list

我有此列表

list=[0,1,2,3,4,2,6]

我想再列出一个这样的元组列表:

list=[(0,1),(1,2),(2,3),(3,4),(4,2),(2,6)]

我可以使用内置功能吗?

3 个答案:

答案 0 :(得分:2)

您可以使用zip和列表理解。 listt[1:]从第二个元素开始。这样做是因为在您的第一对中,您具有第一个和第二个元素。 zip创建对,然后遍历它们,然后使用()将它们存储为元组。

一条建议:请勿将内置名称用作变量。 list

listt=[0,1,2,3,4,2,6]

result = [(i) for i in zip(listt, listt[1:])]
# [(0, 1), (1, 2), (2, 3), (3, 4), (4, 2), (2, 6)]

对标效果

基于@prashant rana的评论,我将zip的性能与他的方法进行比较,得出的列表比原始列表长了 100万倍。结果如下:zip变得更快

import timeit
listt=[0,1,2,3,4,2,6]*1000000

%timeit [(listt[i],listt[i+1]) for i in range(len(listt)-1)]
%timeit [(i) for i in zip(listt, listt[1:])]

1.76 s ± 178 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
937 ms ± 46.6 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

答案 1 :(得分:0)

[(i, list[idx + 1]) for idx, i in enumerate(list) if idx < len(list) - 1]
  

[(0,1),(1,2),(2,3),(3,4),(4,2),(2,6)]

答案 2 :(得分:0)

没有内置函数,但是python使创建自己的函数非常容易。在这里,您去了:

list = [0, 1, 2, 3, 4, 2, 6]
x = [(list[i], list[i+1]) for i in range(len(list)-1)]