python - 如何使用 Python 根据两个列表之一的列表元素出现来连接两个列表

标签 python python-3.x list

我有以下列表

list1 = [[x1,1,b1],[x2,1,b1],[x3,1,b1],[x4,1,b1]]

及以下内容

list2 = [[x1,0,b1],[x5,0,b1],[x2,0,b1],[x7,0,b1]]

我不知道如何创建像

这样的最终列表
list3 = [[x1,1,b1],[x2,1,b1],[x3,1,b1],[x4,1,b1],[x5,0,b1],[x7,0,b1]]

保留第一个list1并从list2添加到list1的元素 仅当 list2[0][0] 元素在 list1 中不存在时

我尝试了以下几种组合

for i in list1:
    for i2 in list2:
        if i[0][0] != i2[0][0]
            list3.append(i2)

但是 list3 显示了常见的元素

最佳答案

您尝试的逻辑是错误的。你的双循环失败了,因为在循环两个组合列表的所有元素时,差异测试必须在某个时候为真。

让我提出一个更快且有效的替代方案:

  • 提取集合中每个list1子列表的第一个元素以进行快速匹配。
  • 然后通过添加 list1list2 的过滤元素创建新列表

像这样:

list1 = [['x1',1,'b1'],['x2',1,'b1'],['x3',1,'b1'],['x4',1,'b1']]
list2 = [['x1',0,'b1'],['x5',0,'b1'],['x2',0,'b1'],['x7',0,'b1']]

list_items = {l[0] for l in list1}

list3 = list1 + [l for l in list2 if l[0] not in list_items]

结果:

>>> list3
[['x1', 1, 'b1'],
 ['x2', 1, 'b1'],
 ['x3', 1, 'b1'],
 ['x4', 1, 'b1'],
 ['x5', 0, 'b1'],
 ['x7', 0, 'b1']]

关于python - 如何使用 Python 根据两个列表之一的列表元素出现来连接两个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55640350/

相关文章:

python - python REPL 中没有可用的行历史记录/自动完成

python - PyQt 的 "pyqtProperty"VS python 的标准 "property"

python - 打印一个包含所有可能均值的数组

python - 诅咒Windows的替代品

python - 在 Y 和 Z 之间生成 X 个随机整数?

python - 在 JupyterLab 中使用所需环境时未显示图标

python-3.x - 使用 UI 的 Airflow s3 连接

c# - 通用列表 - 在列表中移动一个项目

python - 处理列表并输出为列表

python - 使用 groupby 后从 pandas 图中删除 "None"文本