Python 按以下方式划分列表
我有这个清单Python 按以下方式划分列表,python,list,Python,List,我有这个清单 list=[0,1,2,3,4,2,6] 我想制作另一个元组列表,如下所示: list=[(0,1),(1,2),(2,3),(3,4),(4,2),(2,6)] 是否有我可以使用的内置函数 您可以使用zip和列表理解listt[1://code>从第二个元素开始。这样做是因为在第一对中,有第一个和第二个元素zip创建对,然后对它们进行迭代,并使用()将它们存储为元组 一条建议:不要使用内置名称作为变量列表在您的情况下 listt=[0,1,2,3,4,2,6] result
list=[0,1,2,3,4,2,6]
我想制作另一个元组列表,如下所示:
list=[(0,1),(1,2),(2,3),(3,4),(4,2),(2,6)]
是否有我可以使用的内置函数 您可以使用zip和列表理解
listt[1://code>从第二个元素开始。这样做是因为在第一对中,有第一个和第二个元素zip
创建对,然后对它们进行迭代,并使用()
将它们存储为元组
一条建议:不要使用内置名称作为变量<代码>列表
在您的情况下
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)
[(i,list[idx+1])对于idx,如果idx
[(0,1)、(1,2)、(2,3)、(3,4)、(4,2)、(2,6)]
虽然没有内置函数,但python使您可以很容易地创建自己的函数。给你:
list = [0, 1, 2, 3, 4, 2, 6]
x = [(list[i], list[i+1]) for i in range(len(list)-1)]
使用不使用列表作为变量名,它会使内置int函数的阴影使用zip会使其变慢。可能是真的,但我假设OP没有将其用于生产目的。对于小列表,如问题中所述,它的作用是我发现它的执行时间是mine@prashantrana:检查“我的编辑”以查看比原始列表大100万倍的列表
zip
比你的方法快是的zip
确实比你的方法快。
list = [0, 1, 2, 3, 4, 2, 6]
x = [(list[i], list[i+1]) for i in range(len(list)-1)]