首页 > 解决方案 > 通过交替元素将列表拆分为 2 个列表

问题描述

我想将一个列表拆分为 2 个列表,其中原始列表中的元素交替放入新列表中。这是一个带有预期输出的简单示例。

l = ['a', 'b', 'c', 'd', 'e', 'f']

=> 
['a', 'c', 'e']
['b', 'd', 'f']

我希望在 itertools 中有一个现有的解决方案,但找不到任何合适的解决方案。我在这里也找不到任何解决方案。最终我采用了以下解决方案。它工作得很好,很短/可读,但效率不高(迭代原始列表两次,并使用索引而不是迭代器)。

l1 = [l[i] for i in range(0, len(l), 2)]
l2 = [l[i] for i in range(1, len(l), 2)]

现在我很好奇。是否存在既短又高效的现有通用解决方案?

标签: pythonitertools

解决方案


您可以使用语法对列表进行切片l[start:stop:increment]。因此,在您的情况下,它将是l[::2]and l[1::2]。如果将参数留空,则默认值分别为0len(l)1


推荐阅读