python - 在Python中合并2个列表,赋予一个列表优先级

标签 python list merge

我不想连接列表。我只是想知道是否有更 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/

相关文章:

python - Windows 中 Python 编程的最新技术是什么?

python - matplotlib.animation 错误 - 系统找不到指定的文件

只需一行 Python 赋值

r - 如何操作嵌套列表中的NULL元素?

python - 如何增加和填充 python 列表的大小?

r - 将多个文件合并到一张大数据表中。文件中的列名称不匹配

python - 如何在调用 dos2unix 以验证 checkin 文件的 SVN 中实现预提交 Hook 脚本

python - macos 上的 pymqi 库未加载 : @rpath/libmqic_r. dylib

LINQ 在行中合并结果

Git:目前与私有(private)远程仓库 merge/冲突。如何告诉 Git 只使用我的本地文件?