python - 每 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 数组的答案也很好。
解决方案
我认为对于任何可能大小的数组都没有简单的 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
。
推荐阅读
- python - 如何使用 sympy 找到生成函数的第 n 项?
- tensorflow - 是否可以将多个图像输入馈送到卷积神经网络
- kdb - 如何在 kdb 中的分区表上应用 asof 连接
- python - 从字典列表中获取特定值
- java - “mvn 依赖:树”和 http://repo.maven.org 依赖细节之间的区别
- r - 在 R 中使用大型哈希表
- javascript - 可以降低或调整 Node 的 Date.now() 精度吗?
- node.js - 有没有一种简单的方法可以在堆栈上获取当前活动的对话框?
- laravel - 如何安排活跃账户的价值?
- excel - Excel 下拉数据填充问题