Python如何跳过指定负数将一维列表转换为嵌套列表
解法1:基于你已收集的分割下标实现
你已经拿到了所有-64所在的下标,只需要给下标列表补上前置和后置边界,再按区间切片即可:
# 补全边界:开头补-1,结尾补列表总长度 full_index = [-1] + lst_index + [len(lst)] res = [] for i in range(len(full_index)-1): # 取两个相邻分割点中间的部分,跳过-64本身 start = full_index[i] + 1 end = full_index[i+1] sub_lst = lst[start:end] # 存在连续-64的场景下,可以加判断过滤空列表 if sub_lst: res.append(sub_lst) print(res)
运行后就能得到你要的[[13, 1, 14], [9], [14, 5]]结果。
解法2:更简洁的单次遍历实现(无需提前收集下标)
如果你不需要单独留存-64的下标,可以直接一次遍历完成分割,代码更简洁,时间复杂度为O(n)效率更高,还能自动兼容列表开头/结尾是-64、连续多个-64的边界场景:
lst = [13, 1, 14, -64, 9, -64, 14, 5] res = [] current = [] for num in lst: if num == -64: if current: res.append(current) current = [] else: current.append(num) # 遍历结束后把最后一段子列表加入结果 if current: res.append(current) print(res)
内容的提问来源于stack exchange,提问作者Louis
相关产品推荐
相关产品推荐

