我有一个列表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)