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

Python中如何将生成的列表封装为嵌套子列表?

问题描述

我拥有列表J和numpy数组MaxPr,通过循环创建新列表Max Pr new,但需要将该列表封装为嵌套子列表形式。以下是当前实现代码、当前输出与期望输出:

当前代码

import numpy as np
arMaxPrnew=[]

J=[[1, 2, 8, 9, 11, 12, 13, 16, 17, 18, 21, 24, 25, 26, 27, 31, 33, 36, 37, 38]] 

MaxPr=np.array([423.056174 , 368.757486 , 339.165087 , 339.165087 , 423.056174 ,
       423.056174 , 368.757486 , 339.165087 , 339.165087 , 423.056174 ,
       368.757486 , 339.165087 , 339.165087 , 294.817814 , 313.653565 ,
       313.653565 , 276.03611  ,   0.       , 294.817814 , 313.653565 ,
       276.03611  ,  18.388115 , 294.817814 , 294.817814 , 294.817814 ,
       197.811705 ,  18.388115 , 294.817814 , 294.817814 , 197.811705 ,
        37.2027264, 294.817814 , 294.817814 , 294.817814 , 114.343795 ,
        37.2027264, 294.817814 , 294.817814 , 114.343795 ,  37.2027264])


for i in range(0,len(J[0])):
    MaxPrnew=MaxPr[J[0][i]]
    arMaxPrnew.append(MaxPrnew)
    MaxPrnew=list(arMaxPrnew) 
print("Max Pr new =",MaxPrnew) 

当前输出

Max Pr new = [368.757486, 339.165087, 339.165087, 423.056174, 339.165087, 339.165087, 294.817814, 276.03611, 0.0, 294.817814, 18.388115, 294.817814, 197.811705, 18.388115, 294.817814, 294.817814, 294.817814, 294.817814, 294.817814, 114.343795]

期望输出

Max Pr new = [[368.757486, 339.165087, 339.165087, 423.056174, 339.165087, 339.165087, 294.817814, 276.03611, 0.0, 294.817814, 18.388115, 294.817814, 197.811705, 18.388115, 294.817814, 294.817814, 294.817814, 294.817814, 294.817814, 114.343795]]
解决方案

方法1:直接嵌套结果列表

修改打印语句,将生成的列表包裹进一个新列表即可:

print("Max Pr new =", [MaxPrnew])

或者在循环结束后重新赋值:

MaxPrnew = [MaxPrnew]
print("Max Pr new =", MaxPrnew)

方法2:初始化时使用嵌套列表

一开始就把存储结果的容器定义为嵌套列表,每次往子列表中追加元素:

import numpy as np
arMaxPrnew = [[]]  # 初始化为嵌套列表

J=[[1, 2, 8, 9, 11, 12, 13, 16, 17, 18, 21, 24, 25, 26, 27, 31, 33, 36, 37, 38]] 

MaxPr=np.array([423.056174 , 368.757486 , 339.165087 , 339.165087 , 423.056174 ,
       423.056174 , 368.757486 , 339.165087 , 339.165087 , 423.056174 ,
       368.757486 , 339.165087 , 339.165087 , 294.817814 , 313.653565 ,
       313.653565 , 276.03611  ,   0.       , 294.817814 , 313.653565 ,
       276.03611  ,  18.388115 , 294.817814 , 294.817814 , 294.817814 ,
       197.811705 ,  18.388115 , 294.817814 , 294.817814 , 197.811705 ,
        37.2027264, 294.817814 , 294.817814 , 294.817814 , 114.343795 ,
        37.2027264, 294.817814 , 294.817814 , 114.343795 ,  37.2027264])


for i in range(0,len(J[0])):
    MaxPrnew=MaxPr[J[0][i]]
    arMaxPrnew[0].append(MaxPrnew)  # 往第一个子列表追加元素
    MaxPrnew = arMaxPrnew 
print("Max Pr new =", MaxPrnew) 

方法3:利用numpy索引直接生成(更高效)

借助numpy的批量索引特性,直接获取目标元素后转成嵌套列表:

import numpy as np

J=[[1, 2, 8, 9, 11, 12, 13, 16, 17, 18, 21, 24, 25, 26, 27, 31, 33, 36, 37, 38]] 

MaxPr=np.array([423.056174 , 368.757486 , 339.165087 , 339.165087 , 423.056174 ,
       423.056174 , 368.757486 , 339.165087 , 339.165087 , 423.056174 ,
       368.757486 , 339.165087 , 339.165087 , 294.817814 , 313.653565 ,
       313.653565 , 276.03611  ,   0.       , 294.817814 , 313.653565 ,
       276.03611  ,  18.388115 , 294.817814 , 294.817814 , 294.817814 ,
       197.811705 ,  18.388115 , 294.817814 , 294.817814 , 197.811705 ,
        37.2027264, 294.817814 , 294.817814 , 294.817814 , 114.343795 ,
        37.2027264, 294.817814 , 294.817814 , 114.343795 ,  37.2027264])

# 用J的子列表批量索引MaxPr,再转成嵌套列表
MaxPrnew = MaxPr[J[0]].tolist()
MaxPrnew = [MaxPrnew]
print("Max Pr new =", MaxPrnew)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 05:05:37