我正在尝试找到一种方法,将列表中的所有元素插入另一个列表的每个第 n 个元素。有几个类似的帖子,但它们是针对一个列表的单个元素到另一个列表的。我想弄清楚的是采取以下列表:
l1 = ["a","b"]
l2 = ["j","k","l","m","n","o","p","q","r","s","t"u"]
并将它们一起输出:
["j","k","l","a","b","m","n","o","a","b","p","q","r","a","b","s","t","u"]
我认为行之有效的方法至少是这样开始的:
for x in 1st:
for i in range(len(l2)):
2nd.extend(l1)
我知道这行不通,但我不知道如何实施。
在上面的特定输出中,第一个列表添加到每第三个元素之后。它不必是每三个元素,但我只是用它作为例子。
有人可以教我如何做到这一点吗?
编辑: 在@Chris的帮助下,我找到了一个名为的第三方库more_itertools,并创建了一个新代码,它完全符合我的要求。这是我想出的:
import more_itertools as mit
l1 = ["a","b"]
l2 = ["j","k","l","m","n","o","p","q","r","s","t","u"]
#We will place the elements of 1st after every two elements of 2nd
l3 = list(mit.collapse(mit.intersperse(l1, l2, n=len(l1))))
结果:
>>> print(l3)
['j', 'k', 'a', 'b', 'l', 'm', 'a', 'b', 'n', 'o', 'a', 'b', 'p', 'q', 'a',
'b', 'r', 's', 'a', 'b', 't', 'u']
我发现该intersperse函数将允许用户将元素以“第 n”间隔放置到单独的列表中。在此示例中,我将 l1 列表放置在 l2 列表中的每隔一个元素之后(因为 len(l1) 等于 2)。该collapse函数将获取放置在 l2 中的列表,并将每个元素作为单独的元素按顺序排列。
感谢所有在这方面帮助过我的人。我喜欢学习新东西。
DIEA
白猪掌柜的
泛舟湖上清波郎朗
侃侃无极
手掌心
相关分类