关于python:将简单列表转换为两个元组

Turn flat list into two-tuples

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

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

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

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

列表将包含偶数个元素。


这很短:

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


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


1
2
3
4
>>> input = ['this', 'is', 'a', 'list']

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