Python中创建多个子列表:现有代码输出不符预期
问题解决:将列表中每个元素包装为子列表
问题描述
现有列表J = [[1, 2, 4, 6, 7],[1,4]],需要将J中每个子列表的元素单独包装为子列表,最终得到如下结构:
J1 = [[[1], [2], [4], [6], [7]], [[1], [4]]]
现有代码问题分析
你当前的代码逻辑错误,导致输出不符合预期:
J = [[1, 2, 4, 6, 7],[1,4]] arJ1=[] for i in range(0,len(J)): J1=[J[i]] # 直接将整个子列表作为元素存入,而非拆分每个元素 arJ1.append(J1) J1=list(arJ1) print("J1 =",J1)
当前输出:
J1 = [[[1, 2, 4, 6, 7], [1, 4]]]
错误原因:
J1=[J[i]]是把J的整个子列表(比如[1,2,4,6,7])作为单个元素放入新列表,没有对其中的每个元素进行拆分包装。- 循环中重复将
arJ1赋值给J1,最终导致原列表被多嵌套了一层,而非按需求拆分元素。
正确实现方式
方式1:嵌套循环(直观易懂)
J = [[1, 2, 4, 6, 7],[1,4]] arJ1 = [] # 遍历J中的每个子列表 for sublist in J: inner_result = [] # 遍历子列表中的每个元素,包装成单独的子列表 for num in sublist: inner_result.append([num]) # 将处理后的子列表存入最终结果 arJ1.append(inner_result) print("J1 =", arJ1)
方式2:列表推导式(简洁高效)
Python的列表推导式可以用一行代码完成嵌套转换:
J = [[1, 2, 4, 6, 7],[1,4]] J1 = [[[num] for num in sublist] for sublist in J] print("J1 =", J1)
两种方式的输出均符合预期:
J1 = [[[1], [2], [4], [6], [7]], [[1], [4]]]
内容的提问来源于stack exchange,提问作者AEinstein
相关产品推荐
相关产品推荐

