python - 通过交替元素将列表拆分为 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)]
现在我很好奇。是否存在既短又高效的现有通用解决方案?
解决方案
您可以使用语法对列表进行切片l[start:stop:increment]
。因此,在您的情况下,它将是l[::2]
and l[1::2]
。如果将参数留空,则默认值分别为0
、len(l)
和1
。
推荐阅读
- oracle - 如何解决 ORA-00904:“CI”。“CATALOG_ITEM_ID”:无效标识符 行错误:2 列:52
- php - 从链接 RegEx 中排除网站 url
- sql - SQL:每组取 1 个值
- python - 如何在 python 中使用 sqlalchemy 在查询中创建 sql server 表变量
- sql - 查找重复项并将其删除应用条件 SQL Server
- robotframework - 如何在示例 html 中找到包含特定文本的 Button 后跟 card_header-title
- c++ - 继承中类的模板类型
- javascript - 如何在 Lerna 包中共享构建脚本
- web-audio-api - 失谐振荡器似乎相互反弹
- arrays - 根据两个属性的唯一组合拆分对象数组