将平面列表变为两元组

时间:2013-02-15 20:19:31

标签: python

是否有单行表达式来完成以下操作:

input = ['this', 'is', 'a', 'list']
output = [('this', 'is'), ('a', 'list')]

我最初的想法是创建两个列表然后将它们压缩。这将需要三行。

该列表将包含偶数个元素。

3 个答案:

答案 0 :(得分:7)

这很简短:

zip(input, input[1:])[::2]

答案 1 :(得分:6)

In [4]: zip(*[iter(lst)]*2)
Out[4]: [('this', 'is'), ('a', 'list')]

答案 2 :(得分:3)

>>> input = ['this', 'is', 'a', 'list']

>>> [(input[i], input[i + 1]) for i in range(0, len(input), 2)]
[('this', 'is'), ('a', 'list')]