一个List中,存在一些空的array,需要用附近的区域进行平滑插值。 下面函数可以获得空的array的区域起止位置。 def Process_Void(datas=None): begin_end_id_list = [] all_ok_ = True for id, dat in enumerate(datas): if all_ok_ == True: if len(dat)==0: all_ok_ = False begin_end_id = [] begin_end_id.append(id) else: if len(dat) > 0: all_ok_ = True begin_end_id.append(id - 1) begin_end_id_list.append(begin_end_id) if id==len(datas) - 1: begin_end_id.append(id) begin_end_id_list.append(begin_end_id) return begin_end_id_lists
上述代码有个bug,处理不了末尾有一个异常情况的例子
def Process_Void(self, datas=None): begin_end_id_list = [] all_ok_ = True for id, dat in enumerate(datas): if all_ok_ == True: if len(dat)==0: all_ok_ = False begin_end_id = [] begin_end_id.append(id) if id==len(datas) - 1: ##处理如果当前一个空是末尾最后一个 向后再也没有的 begin_end_id.append(id) begin_end_id_list.append(begin_end_id) else: if len(dat) > 0: all_ok_ = True begin_end_id.append(id - 1) begin_end_id_list.append(begin_end_id) if id==len(datas) - 1: ## 如果不正常 装态 走到最后了 再也没有了 就如此 begin_end_id.append(id) begin_end_id_list.append(begin_end_id) return begin_end_id_list
也可以在上述循环最外层处理这个问题,这样的话,代码会简单一些。