2016-11-09 27 views
1

我試圖找到的第一個空項目從下面的列表索引:Python的 - 尋找第一個空項目的索引列表中的

list_ = [10000.0, 6000.0, nan, nan, nan] 

,並顯示出正確的輸出作爲一個指標:

2 

我一直在引用這個link的代碼,但我一直收到「StopIteration:」錯誤消息。有沒有人有解決這個問題?

這是我到目前爲止的代碼:

try: 
    next(i for i, j in enumerate(list_) if j == "nan") 
except StopIteration: 
    pass 
+0

什麼是'nan'的數據類型? –

+0

其數據類型爲numpy.float64。我明白你在說什麼。 – Fxs7576

回答

3

你的檢查條件是錯誤的,它試圖找到一個相同項目"nan"。要檢查float var是否爲nan,請使用math.isnan(j)

+0

謝謝你的解決方案和解釋。 – Fxs7576

3

這個人是有點棘手,因爲nan不等於本身。

不過,您目前的解決方案是使用isnan容易適應:

import math 

try: 
    index = next(i for i, j in enumerate(list_) if math.isnan(j)) 
except StopIteration: 
    # nan is not in the list 
    pass 
+0

謝謝你的幫助。 – Fxs7576

0

可能做到這一點更Python的方式,但是這是我會做什麼:

from numpy import nan, isnan 

list_ = [10000.0, 6000.0, nan, nan, nan] 

for ind, elem in enumerate(list_): 
    if isnan(elem): 
     print ind 
     break 
相關問題