首页 > 解决方案 > 每 n 个位置将列表中的项目插入另一个列表

问题描述

我有以下清单。

vector = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
inserted_elements = [2, 2, 2, 2, 2]

我想通过插入每两个元素来获得以下信息。

output = [1, 2, 2, 3, 4, 2, 5, 6, 2, 7, 8, 2, 9, 10, 2]

不仅 Python 列表,而且使用 numpy 数组的答案也很好。

标签: pythonlistnumpy

解决方案


我认为对于任何可能大小的数组都没有简单的 NumPy 方法来执行此操作,但这是使用迭代器和列表理解的 python 方法:

it1, it2 = map(iter, (vector, inserted_elements))
n = sum(map(len, (vector, inserted_elements)))

[next(it2) if i % 3 == 0 else next(it1) for i in range(1, n+1)]
# [1, 2, 2, 3, 4, 2, 5, 6, 2, 7, 8, 2, 9, 10, 2]

输出中的每个第 3 个元素将来自it2,即 的迭代器inserted_elements。其余的来自it1哪个对应vector


推荐阅读