通过替换元素将列表分为2个列表

时间:2019-12-15 21:02:26

标签: python itertools

我想将一个列表分为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)]

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

1 个答案:

答案 0 :(得分:1)

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