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')] |