python - 在 Python 中以交替模式将 4 个列表的元素附加到单个列表中
问题描述
我有 4 个数字列表:
a = [ 1, 2, 3, 4 ... 100]
b = [101, 102, 103, 104 ... 200]
c = [201, 202, 203, 204 ... 300]
d = [301, 302, 303, 304 ... 400]
我想将它们附加到一个新列表e
中,其模式为:
- use 4 elements from a,
- then 3 elements from b,
- then 2 elements from c,
- then 2 elements from d
repeat until all lists are exhausted
并继续这种模式,直到所有元素都附加到新列表中e
,所以它看起来像:
e = [1, 2, 3, 4, 101, 102, 103, 201, 202, 301, 302, 5, 6, 7, 8...]
如果a
用尽,则循环应以 3:2:2 的相同模式继续剩余 3 个列表,直到所有列表都用尽。
我该怎么做?
解决方案
在重复迭代器上使用roundrobin
来自Itertools 食谱或从more-itertools导入(在线尝试!):
e = [*roundrobin(*[iter(a)]*4, *[iter(b)]*3, *[iter(c)]*2, *[iter(d)]*2)]
同样的东西写的不同(在线尝试!):
a, b, c, d = map(iter, [a, b, c, d])
e = [*roundrobin(a, a, a, a, b, b, b, c, c, d, d)]
推荐阅读
- javascript - 根据输入值自动添加表单输入字段
- angular - ngFor中的角度多个表单值
- svg - 如何从 SVG 中提取一个元素及其参考元素?
- mysql - 根据 MySQL (v8) 中的条件创建重复行
- microsoft-graph-api - Microsoft Bot Framework:任务模块
- python - 不圆列
- google-sheets - 使用 IMPORTRANGE 或 VLOOKUP 返回数据时是否无法包含字体颜色?
- ls - 我如何 ls 一个目录来获取它的数据,但没有它的文件?
- python - 如何在 Python 的列表推导中执行多个表达式?
- python - python将列表中的多个dicts与多个条件进行比较