可能重复:
Pairs from single list
我有一个小整数列表,比如说:
[1, 2, 3, 4, 5, 6]
我希望收集顺序对并返回一个包含从这些对创建的元组的新列表,即:
[(1, 2), (3, 4), (5, 6)]
我知道必须有一个非常简单的方法来做到这一点,但不能完全解决它。
由于
答案 0 :(得分:33)
有一种非常简单但有些脆弱的方式,用自己的切片版本拉链。
zipped = zip(mylist[0::2], mylist[1::2])
如果您不知道,最后一个切片参数是“步骤”。因此,我们从零(1,3,5)开始选择列表中的每个第二项。然后我们做同样的事情,但从一个(2,4,6)开始,用zip
制作元组。
答案 1 :(得分:5)
直接来自itertools模块的Python文档:
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
答案 2 :(得分:4)
除上述答案外,您还需要了解最简单的方法(如果您还不知道)
l = [1, 2, 3, 4, 5, 6]
o = [(l[i],l[i+1]) for i in range(0,len(l),2)]