gpt4 book ai didi

python - 每隔 n 个位置将列表中的项目插入另一个列表

转载 作者:太空宇宙 更新时间:2023-11-03 13:55:36 29 4
gpt4 key购买 nike

我有以下列表。

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 数组的答案也很好。

最佳答案

这是一个 itertools基于方法,它也适用于将任意数量的元素从一个列表插入到另一个列表。为此,我定义了一个生成器函数,它会将 l2 中的元素插入到 l1 中的每个 i 项中:

def insert_every_n(l1, l2, k):
i1, i2 = iter(l1), iter(l2)
while True:
try:
yield from islice(i1, k)
yield next(i2)
except StopIteration:
return

这通过使用 itertools.islice 在每次迭代中从迭代器 l1 中产生最多 i 个项目来工作.用yield from我们产生了与切片迭代中一样多的项目,因此迭代运行到耗尽,(for v in g: yield v 的快捷方式)。

最后,我们可以用 try/expect 包装 yield 语句以捕获 StopIteration 警告。


让我们试试建议的例子:

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

list(insert_every_n(vector, inserted_elements, k=2))
# [1, 2, 2, 3, 4, 2, 5, 6, 2, 7, 8, 2, 9, 10, 2]

如果我们想每 3 个项目添加一个 l2 项目:

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

list(insert_every_n(vector, inserted_elements, k=3))
# [1, 2, 3, 2, 4, 5, 6, 2, 7, 8, 9, 2, 10, 2]

关于python - 每隔 n 个位置将列表中的项目插入另一个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56286403/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com