我有两个清单,list1
和list2
.
在这里len(list2) << len(list1)
.
现在我想合并两个列表,使得最终列表的每个第n个元素来自list2
,而其他list1
元素来自.
例如:
list1 = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'] list2 = ['x', 'y'] n = 3
现在最后的清单应该是:
['a', 'b', 'x', 'c', 'd', 'y', 'e', 'f', 'g', 'h']
实现这一目标的最恐怖的方法是什么?
我想将所有元素添加list2
到最终列表中,最终列表应包含来自list1
和的所有元素list2
.
使较大的列表成为迭代器可以轻松地为较小列表的每个元素获取多个元素:
list1 = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'] list2 = ['x', 'y'] n = 3 iter1 = iter(list1) res = [] for x in list2: res.extend([next(iter1) for _ in range(n - 1)]) res.append(x) res.extend(iter1) >>> res ['a', 'b', 'x', 'c', 'd', 'y', 'e', 'f', 'g', 'h']
这避免了insert
对于大型列表而言可能是昂贵的,因为每次需要重新创建整个列表.
要保留原始列表,可以尝试以下操作:
result = copy.deepcopy(list1) index = n - 1 for elem in list2: result.insert(index, elem) index += n
结果
['a', 'b', 'x', 'c', 'd', 'y', 'e', 'f', 'g', 'h']