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
相关产品推荐
相关产品推荐

