我不想连接列表。我只是想知道是否有更 Pythonic 的方法来做到这一点:
def merge(list1, list2):
result = []
result += list1
if len(list2) > len(list1):
result += list2[len(list1):]
return result
所以
a = [7,6,5,4,3,2,1]
b = [1,2,3,4,5,6,7,8,9,10]
merge(a,b)
> [7,6,5,4,3,2,1,8,9,10]
注意:我不确定合并是否是我在这里尝试做的事情的规范术语。希望我的问题很清楚。
编辑: 我应该说得更清楚,上面的代码正是我想要的。我不在乎出现重复项。基本上,我想要的是第一个列表中的所有元素都位于结果列表中的相同位置,但我希望结果列表的末尾用与第二个列表中的索引相对应的元素填充,如果第二个列表比第一个列表大。
这是另一个例子:
a = [2,3,1,3,3,2]
b = [1,1,1,1,1,1,1,1,2,1,1]
merge(a,b)
> [2,3,1,3,3,2,1,1,2,1,1]
merge(b,a)
> [1,1,1,1,1,1,1,1,2,1,1]
最佳答案
您可以添加第一个列表和第二个列表的过滤版本。您可以使用列表理解来循环 b
中的项目并保留不在 a
中的项目:
>>> a+[i for i in b if i not in a]
[7, 6, 5, 4, 3, 2, 1, 8, 9, 10]
或者您可以使用numpy
:
>>> import numpy as np
>>> np.concatenate((a,np.setdiff1d(b,a)))
array([ 7, 6, 5, 4, 3, 2, 1, 8, 9, 10])
关于python - 在Python中合并2个列表,赋予一个列表优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33055168/