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

如何用Python列表推导式无第三方库生成指定结构的0-1矩阵

实现方案

正确列表推导式写法

你之前的写法核心问题是遍历顺序和判断逻辑搞反了,正确的逻辑是外层遍历l2的每个子列表(对应矩阵每一行),内层遍历l1的每个元素(对应矩阵每一列),判断当前l1元素是否在当前l2子列表中,直接生成对应值即可,不需要先初始化全0矩阵:

# 基础写法
A = [[1 if item in sublist else 0 for item in l1] for sublist in l2]

# 简化写法:布尔值转int时True对应1、False对应0,可以直接用int()转换
A = [[int(item in sublist) for item in l1] for sublist in l2]

大数据量优化方案

因为你提到处理的数据集体量极大,列表的in操作时间复杂度是O(n),每次判断都要遍历整个子列表,性能开销很高,可以先把l2的所有子列表转成集合,集合的in操作时间复杂度是O(1),整体性能会有数量级提升:

# 先将l2的子列表全部转成集合,降低后续查找开销
l2_sets = [set(sublist) for sublist in l2]
# 生成矩阵
A = [[int(item in sub_set) for item in l1] for sub_set in l2_sets]

用你给出的示例参数运行后,得到的A结果为[[1, 0, 1, 0], [0, 0, 1, 0], [0, 1, 1, 1]],和你预期的矩阵结构完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 23:54:03