【发布时间】:2021-08-17 14:48:32
【问题描述】:
我有两个列表。我想合并这两个列表。
list_1 = ['a', 'b', 'c', 'd', 'f', 'g', 'h', 'i']
list_2 = ['a', 'b', 'd', 'e', 'f', 'h', 'i']
我想要的输出是
['a', 'b', 'c', 'd', 'e','f', 'g', 'h', 'i']
我尝试了以下算法
missing_elem = []
missing_index = []
elem_to_add = []
for i, elem in enumerate(list_2):
if elem not in list_1:
missing_elem.append(elem)
missing_index.append(i)
print(missing_index)
print(missing_elem)
for i in range(len(missing_index)):
elem_to_add.append(missing_elem[i])
list_1.insert(missing_index[i], col_to_add)
elem_to_add = []
print(list_1)
上面的输出是
[3]
['e']
['a', 'b', 'c', ['e'], 'd', 'f', 'g', 'h', 'i']
因为 e 在 list_2 中的 'd' 和 'f' 之间,但在输出中我得到它在 'c' 和 'd' 之间 请帮助我获得正确的输出
【问题讨论】:
-
算法的目的是什么?
-
我不明白。对不起。您现有的尝试在整个输出集上循环,并且描述中没有关于相邻元素的任何内容。也许添加输入来说明为什么
sorted(set(list_1) | set(list_2))不起作用 工作。 -
那么只需对输出进行排序...?
-
根据什么逻辑定义“正确的索引”?为什么“斑马”要介于“猫”和“狗”之间?我强烈建议您编辑您的帖子以显示 2-3 个附加示例来说明您的规范。我建议使用不按字母顺序排列的元素列表来更好地激发我建议的解决方案不合适的原因。我要敲了,因为我迷路了,可能只是在这一点上惹你生气。
-
这是有道理的,但是
a = [1, 5, 3, 15, 2]、b = [6, 1, 10]呢?什么是正确的输出?我们知道我们需要在a中插入 6,但查看相邻元素并没有告诉我们什么。您说列表未排序。a = [1, 6, 22, 4]、b = [7, 2]怎么样?