如何在成对元素上拆分列表?

时间:2011-06-15 13:00:05

标签: python list

  

可能重复:
  How do you split a list into evenly sized chunks in Python?

让我们有一个列表,总是有偶数个元素。我们必须通过配对来打破它。 例: 列表[ '1', '2', '3', '4'] 需要 1,2和3,4

5 个答案:

答案 0 :(得分:5)

答案 1 :(得分:1)

如果你想要列表的两半。

l = [1,2,3,4]
print l[:len(l)/2], l[len(l)/2:]
>>> [1, 2] [3, 4]

如果您想要成对分割列表,那么您的问题就是duplicate

答案 2 :(得分:1)

>>> L = [1, 2, 3, 4]
>>> pairs = zip(L[::2], L[1::2])
>>> print pairs
[(1, 2), (3, 4)]

希望这有帮助

答案 3 :(得分:0)

你也可以使用这样的东西:

lVals = xrange(1,101)
size = len(lVals)
output = ((lVals[i], lVals[i+1] if size > i+1 else None) for i in xrange(0, size, 2))

答案 4 :(得分:0)

改编自:How do you split a list into evenly sized chunks?

from itertools import izip_longest
data = range(6)
data_iters = [iter(data)] * 2
pairs = izip_longest(*data_iters)
[pair for pair in pairs]
>>> [(0, 1), (2, 3), (4, 5)]

聪明的部分是data_iters的两个元素引用同一个对象。 Izip_longest交替使用作为参数传递的两个迭代器,但由于它们指的是同一个对象,因此它有效地配对了迭代器中的元素。

我不赞成在这里聪明,如果你喜欢我的答案,请提交我所关联的评论。 :)