我有一个看起来像这样的数组
[1,2,3,4,5]
我想要一个看起来像这样的元组列表:
[(1,2),(2,3),(3,4),(4,5)]
在python中执行此操作最方便的方法是什么?
谢谢!
答案 0 :(得分:7)
zip( a[:-1], a[1:] )
请参阅help(zip)
或zip
的网站documentation。
由于zip
将自己限制在较短的序列中,
zip(a, a[1:])
也有效。
编辑:
史蒂文提出了一个有趣的观点,即如果a
非常长,那么执行隐式复制以获得a[1:]
的单独pyObject是有问题的。在这种情况下,您可能希望使用numpy
及其选项来获取具有偏移量的相同数据的视图。
答案 1 :(得分:3)
这可以使用列表推导和列表切片来完成,您将元素迭代到len(a) - 1
,并在每个迭代切片上将元素形成current_index
及其旁边的元素。
a = [1,2,3,4,5]
b = [tuple(a[i:i+2]) for i in range(len(a)-1)]
print b
>>> [(1, 2), (2, 3), (3, 4), (4, 5)]