2016-08-22 18 views
0

我試圖讓outputx [VX]值的指數值錯誤「不在名單」

>>> outs = np.array(outputx[vX]).tolist() 
>>> print outs 
[0.806, 0.760, 0.8] 
>>> print type(outs) 
(type 'list') 
>>> idx = outputX.index(outs) 
error -> [0.806, 0.760, 0.8] is not in list 

這是什麼意思,我在做什麼錯?

+0

嘗試'outputX.index(0)'或'outputX.index(1)'。或'outputX.index(outputX.find(0.8))' –

+0

'outputX'是什麼類型?另外,你的代碼引用'outputX'和'outputx' - 是有意的嗎? – mgilson

回答

0

index list方法需要一個值,並返回該值在調用該方法的列表中的位置。如果給定的值不在列表中,該方法將引發一個ValueError異常。因此,舉例來說:在你的代碼,因爲在outputX沒有元素(應該說是outputx,順便Python是區分大小寫)包含列表[0.806, 0.760, 0.8]發生

>>> [2, 4, 6, 8].index(6) 
2 
>>> [2, 4, 6, 8].index("no such value") 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ValueError: 'no such value' is not in list 

錯誤。

原因是您正在比較不同類型的數據。從問題的角度來看,你預計會發生什麼並不明確。

0

如果你想索引的列表,你可以使用列表理解:

idx = [outputX.index(i) for i in outs] 

但是你應該死了確保outs列表的所有值都在outputX名單中還,否則蟒蛇會扔你ValueError