我有小整数列表,说:
[1, 2, 3, 4, 5, 6]
我希望收集顺序对并返回一个包含从这些对创建的元组的新列表,即:
[(1, 2), (3, 4), (5, 6)]
我知道必须有一个非常简单的方法来做到这一点,但不能完全解决它。
感谢
我有小整数列表,说:
[1, 2, 3, 4, 5, 6]
我希望收集顺序对并返回一个包含从这些对创建的元组的新列表,即:
[(1, 2), (3, 4), (5, 6)]
我知道必须有一个非常简单的方法来做到这一点,但不能完全解决它。
感谢
那么有一个很容易的,但有些脆弱的方式,用自身切片版本压缩它。
zipped = zip(mylist[0::2], mylist[1::2])
如果您不知道,最后一个切片参数是“步骤”。所以我们从零开始选择列表中的每一个第二项(1,3,5)。然后我们做同样的事情,但是从一个(2,4,6)开始,并用zip
从它们中取出元组。
直起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
除此之外,你还需要知道的最简单的方式太(如果你还没有已经知道)
l = [1, 2, 3, 4, 5, 6]
o = [(l[i],l[i+1]) for i in range(0,len(l),2)]
除了上述的答案,你还需要知道的最简单的方式太(如果你还没有已经知道)
l = [1, 2, 3, 4, 5, 6]
o = [(l[i],l[i+1]) for i in range(0,len(l)-2,2)]
这里应该是o = [(l[i],l[i+1]) for i in range(0,len(l),2)]
,因为range(0, len(l) - 2, 2)
只会产生0和2
这是功课?如果是这样,请使用[作业]标签。 – 2011-01-10 13:00:39
可能重复[对单个列表](http://stackoverflow.com/questions/4628290/pairs-from-single-list)和其他许多人。 – 2011-01-10 13:05:47
@ S.Lott,为什么它可能是作业?它看起来像你的经历吗? – 2011-01-10 13:06:24