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

Python中嵌套子列表指定元素移除的问题及代码修正

修正嵌套列表元素移除代码以匹配预期结构

你需要从嵌套列表A1的对应位置子列表中移除J1里的指定元素,但当前代码输出的结构不符合预期,以下是修正方案:

原代码

A1 = [[[1, 3, 4, 6], [0, 2, 3, 5]], [[1, 3, 4, 6], [1, 3, 4, 6]]]

J1 = [[[1], [2]], [[1], [4]]]

arD = []


for i in range(0,len(A1)):
    for j in range(0,len(J1)):
        C=set(A1[i][j])-set(J1[i][j])
        D=list(C)
        arD.append(D)
        D=list(arD)
print("D =",D)

当前输出

D = [[3, 4, 6], [0, 3, 5], [3, 4, 6], [1, 3, 6]]

期望输出

D = [[[3, 4, 6], [0, 3, 5]],[[3, 4, 6],[1, 3, 6]]]

问题分析

原代码的核心问题是没有保留原列表的三层嵌套结构:所有处理后的子列表都直接追加到了arD中,最终变成了二维列表,而非预期的三维结构。此外,循环中j的范围取len(J1)不够严谨,应该对应当前外层子列表的长度。

修正后的代码

A1 = [[[1, 3, 4, 6], [0, 2, 3, 5]], [[1, 3, 4, 6], [1, 3, 4, 6]]]
J1 = [[[1], [2]], [[1], [4]]]

arD = []

for i in range(len(A1)):
    # 临时存储当前外层子列表的处理结果
    current_group = []
    # 遍历当前外层子列表中的所有子元素
    for j in range(len(A1[i])):
        # 计算集合差集并转回列表
        filtered_list = list(set(A1[i][j]) - set(J1[i][j]))
        current_group.append(filtered_list)
    # 将当前组的结果加入最终列表
    arD.append(current_group)

print("D =", arD)

修正后输出

D = [[[3, 4, 6], [0, 3, 5]], [[3, 4, 6], [1, 3, 6]]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 08:40:28