2016-11-09 3 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 nn, используйте 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

Может быть более вещий способ сделать это, но это то, что я хотел бы сделать:

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 
Смежные вопросы