есть удобный способ включить условия в списки, чтобы сделать следующее:
index = [y for y, s in enumerate(data_time_filtered) if next0 in s]
Я хотел бы добавить следующие условия в определение индекса выше:
if next0 in s:
data_filtered.append(data_time_filtered[index[0]])
else:
missing_data.append(next0)
В настоящее время в моем коде происходит следующее:
IndexError: list index out of range
, когда значение не может быть найдено.Является ли это более эффективным для обработки с помощью else и если используются условия или есть другой / лучший способ обработки ошибок в этом случае?
EXTENSION:
data_time_filtered
- это список строк, таких как:
https://ladsweb.modaps.eosdis.nasa.gov/archive/allData/6/MYD021KM/2018/002/MYD021KM.A2018002.1330.006.2018003152138.hdf
https://ladsweb.modaps.eosdis.nasa.gov/archive/allData/6/MYD021KM/2018/004/MYD021KM.A2018004.1330.006.2018005220236.hdf
https://ladsweb.modaps.eosdis.nasa.gov/archive/allData/6/MYD021KM/2018/006/MYD021KM.A2018006.1330.006.2018007165439.hdf
https://ladsweb.modaps.eosdis.nasa.gov/archive/allData/6/MYD021KM/2018/009/MYD021KM.A2018009.1330.006.2018010190624.hdf
next0
являются строками в виде: /XXX/
например /002/
Функция индекса ищет строку в data_time_
с фильтром, где next0
появляется и возвращает индекс, который используется для извлечения этой строки и добавления ее в другой список.
Проблема в том, что иногда строка, заданная next0
, не содержится в списке, создающемсообщение об ошибке выше.
То, что я хотел бы, это:
Если индекс попадает в крестик такого числа, он должен добавить это число в список missing_data
вместо взлома и выдачи ошибки.
ОБНОВЛЕНИЕ:
Я попробовал это:
try:
index = [y for y, s in enumerate(data_time_filtered) if next0 in s]
data_filtered.append(data_time_filtered[index[0]])
except IndexError:
missing_data.append(next0)
, и это сработало :).Однако на более позднем этапе в другой строке происходит ошибка IndexError.все еще проверяю, как это разобраться