我有此列表
list=[0,1,2,3,4,2,6]
我想再列出一个这样的元组列表:
list=[(0,1),(1,2),(2,3),(3,4),(4,2),(2,6)]
我可以使用内置功能吗?
答案 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)]