是否有一种简洁的方法将条件包含在列表理解中,以便执行以下操作:
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和if条件处理它是否更有效,或者在这种情况下是否有其他/更好的错误处理方法?你知道吗
分机:
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/
index函数在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)
它成功了:)。但是,在另一行的稍后阶段会出现索引器。还在查怎么解决
我不太明白你想用这段代码做什么,但也许这会让你更接近。你知道吗
不是将条件放入
index
的定义中,而是发现错误处理如下:更实用的是可以在
except IndexError
部分中包含更多的条件或循环。你知道吗我试着得到你的要求-让我知道下面的代码是否有用
相关问题 更多 >
编程相关推荐