将列表中的每对元素收集到Python中的元组中

Collect every pair of elements from a list into tuples in Python

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Pairs from single list

我有一个小整数列表,比如:

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

我希望收集顺序对并返回一个包含从这些对创建的元组的新列表,即:

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

我知道必须有一个非常简单的方法来做这件事,但不能完全解决。

谢谢


好吧,有一个非常简单,但有点脆弱的方法,把它自己的切片版本。

1
zipped = zip(mylist[0::2], mylist[1::2])

如果您不知道,最后一个slice参数是"step"。所以我们从零(1,3,5)开始选择列表中的每一个第二项。然后我们做同样的事情,但是从一个(2,4,6)开始,用zip从它们中创建元组。


直接从itertools模块的python文档中:

1
2
3
4
5
6
7
8
9
10
11
from itertools import tee, izip

def pairwise(iterable):
   "s -> (s0,s1), (s1,s2), (s2, s3), ..."
    a, b = tee(iterable)
    next(b, None)
    return izip(a, b)

l = [1, 2, 3, 4, 5, 6]
for pair in pairwise(l):
    print pair


除了以上的答案,你还需要知道最简单的方法(如果你还不知道的话)

1
2
l = [1, 2, 3, 4, 5, 6]
o = [(l[i],l[i+1]) for i in range(0,len(l),2)]