在Python中将列表呈现为子列表



我有一个列表J和一个数组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]]

您使用类list (iterable)从iterablearMaxPrnew生成一个列表。它只是将iterable转换为list。如果你想要一个列表的列表,你必须使用另一种方式

MaxPrnew = list()
MaxPrnew.append(arMaxPrnew)

最新更新