如何在Python中基于特定值分割列表生成嵌套列表
在Python中按指定规则拆分一维列表为嵌套列表
需求:将一维列表转换为嵌套列表,规则是从值为
'01T - 01W'的元素开始,到下一个该值出现前的所有元素组成一个子列表,最后一段包含列表末尾的所有元素。
示例输入
actual_value = ['01T - 01W','01T - 02W', '01T - 03W', '02T - 01W', '02T - 02W', '02T - 03W','01T - 01W', '01T - 02W','01T - 01W', '01T - 02W','01T - 01W', '01T - 02W', '01T - 03W', '02T - 01W', '02T - 02W', '02T - 03W']
期望输出
[ ['01T - 01W','01T - 02W', '01T - 03W', '02T - 01W', '02T - 02W', '02T - 03W'], ['01T - 01W', '01T - 02W'], ['01T - 01W', '01T - 02W'], ['01T - 01W', '01T - 02W', '01T - 03W', '02T - 01W', '02T - 02W', '02T - 03W'] ]
方法一:遍历拆分
直接遍历列表,遇到分隔符时新建子列表,否则将元素添加到当前子列表。
def split_list(lst, separator): result = [] current_sublist = [] for item in lst: if item == separator: if current_sublist: result.append(current_sublist) current_sublist = [item] else: current_sublist.append(item) if current_sublist: result.append(current_sublist) return result # 调用示例 actual_value = ['01T - 01W','01T - 02W', '01T - 03W', '02T - 01W', '02T - 02W', '02T - 03W','01T - 01W', '01T - 02W','01T - 01W', '01T - 02W','01T - 01W', '01T - 02W', '01T - 03W', '02T - 01W', '02T - 02W', '02T - 03W'] output = split_list(actual_value, '01T - 01W') print(output)
方法二:索引切片拆分
先定位所有分隔符的位置,再通过切片生成子列表。
def split_by_separator(lst, separator): indices = [i for i, item in enumerate(lst) if item == separator] result = [] for idx in range(len(indices)): start = indices[idx] end = indices[idx+1] if idx < len(indices)-1 else None result.append(lst[start:end]) return result # 调用示例 actual_value = ['01T - 01W','01T - 02W', '01T - 03W', '02T - 01W', '02T - 02W', '02T - 03W','01T - 01W', '01T - 02W','01T - 01W', '01T - 02W','01T - 01W', '01T - 02W', '01T - 03W', '02T - 01W', '02T - 02W', '02T - 03W'] output = split_by_separator(actual_value, '01T - 01W') print(output)
内容的提问来源于stack exchange,提问作者Vignesh Vangala
相关产品推荐
相关产品推荐

