Python列表操作:如何提取'1'之间的元素生成嵌套子列表?
Python列表按分隔符'1'提取嵌套子列表的实现方法
输入列表:
input_list = ['1', 'A', 'B', 'C', '1', 'D', '1', 'E', 'F', '1', 'G', 'H', 'I']
期望输出:
[['A', 'B', 'C'], ['D'], ['E', 'F'], ['G', 'H', 'I']]
下面是几种实用的实现方式:
方法一:基础循环遍历(通用且易理解)
通过遍历列表,用临时列表收集'1'之间的元素,遇到'1'时将临时列表存入结果,最后处理剩余元素:
input_list = ['1', 'A', 'B', 'C', '1', 'D', '1', 'E', 'F', '1', 'G', 'H', 'I'] result = [] current_sublist = [] for item in input_list: if item == '1': if current_sublist: result.append(current_sublist) current_sublist = [] else: current_sublist.append(item) # 处理最后一组未被触发的元素 if current_sublist: result.append(current_sublist) print(result)
方法二:使用itertools.groupby(简洁高效)
利用groupby按元素是否为'1'分组,直接过滤掉分隔符组,将剩余组转为子列表:
from itertools import groupby input_list = ['1', 'A', 'B', 'C', '1', 'D', '1', 'E', 'F', '1', 'G', 'H', 'I'] result = [list(group) for key, group in groupby(input_list, lambda x: x == '1') if not key] print(result)
方法三:字符串分割法(仅适用于单字符元素场景)
如果列表中所有元素都是单个字符,可以先拼接成字符串再分割,最后转成子列表:
input_list = ['1', 'A', 'B', 'C', '1', 'D', '1', 'E', 'F', '1', 'G', 'H', 'I'] result = [list(s) for s in ''.join(input_list).split('1') if s] print(result)
注意事项
- 方法一和方法二适用于任意类型的元素(只要能判断等于'1'),通用性强;
- 方法三只适用于元素为单个字符的场景,若元素是多字符字符串会失效。
内容的提问来源于stack exchange,提问作者Reaper Furry
相关产品推荐
相关产品推荐

