You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何对比两个列表 在缺失值位置插入指定符号生成新列表

实现思路

以基准列表List1的元素顺序、长度为唯一参照,逐个处理List2中的子列表:对List1每个位置的元素做校验,若元素存在于当前处理的子列表中则保留原元素,不存在则填入指定占位符即可。处理时建议先将子列表转为集合类型,能大幅提升元素存在性判断的效率,列表长度较大时性能差异非常明显。

可直接运行的实现代码
# 初始数据定义
List1 = [1, 2, 3, 4, 5, 6]
List2 = [[1, 3, 6], [3, 5], [2, 3, 5]]
# 可根据需求修改占位符内容
placeholder = '-'

ListFin = []
for sub in List2:
    sub_element_set = set(sub)
    # 按基准列表顺序逐位生成匹配的子列表
    aligned_sub = [ele if ele in sub_element_set else placeholder for ele in List1]
    ListFin.append(aligned_sub)

# 输出验证
print(ListFin)

运行上述代码的输出结果和示例要求完全一致:

[[1, '-', 3, '-', '-', 6], ['-', '-', 3, '-', 5, '-'], ['-', 2, 3, '-', 5, '-']]
适配说明
  • 如果需要更换占位符,直接修改placeholder变量的赋值即可,支持传入None、数值、空字符串等任意类型值
  • 当前逻辑默认会自动忽略List2子列表中存在、但不在基准列表List1里的冗余元素,如果需要保留这类冗余元素,可以在生成aligned_sub后做追加拼接处理
  • 若基准列表长度超过1000,子列表转集合的写法比直接用列表做存在判断的效率高数十倍,不建议省略这一步

内容的提问来源于stack exchange,提问作者Robe_Dom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.31 04:21:12