如何将含分隔0的正数链列表拆分至多个独立子列表?
拆分以0分隔的正数链为独立子列表
我正在处理一个大型数据列表,示例如下:
List=[1,2,3,0,0,0,0,4,5,6,0,0,0,7,8,9]
该列表由多段正数链组成,以0作为分隔符。我希望将每一段正数链分别放入独立的子列表中,而非合并为单个正数列表,预期输出如下:
List1=[1,2,3] List2=[4,5,6] List3=[7,8,9]
具体逻辑为:筛选第一段正数,遇到0时停止,创建新列表存储该段元素;重复此过程直至遍历完原列表所有元素,且子列表数量未知。我尝试用for循环和while循环实现,但似乎无法满足需求,恳请技术帮助。
解决方案
可以通过临时列表收集当前正数链的方式实现,逻辑简单直接,能处理连续0和末尾无0的情况:
代码实现
original_list = [1,2,3,0,0,0,0,4,5,6,0,0,0,7,8,9] result = [] current_segment = [] for num in original_list: if num != 0: current_segment.append(num) else: # 遇到0且当前链不为空时,存入结果并重置临时列表 if current_segment: result.append(current_segment) current_segment = [] # 处理最后一段未以0结尾的正数链 if current_segment: result.append(current_segment) # 按预期格式输出命名子列表 for idx, segment in enumerate(result, start=1): print(f"List{idx}={segment}")
输出结果
List1=[1,2,3] List2=[4,5,6] List3=[7,8,9]
逻辑说明
- 用
current_segment临时存储正在收集的正数链,遇到非0元素直接追加 - 遇到0时,仅当临时列表有内容时才存入结果,避免连续0产生空列表
- 遍历结束后检查临时列表,确保最后一段没有被0截断的正数链被加入结果
- 通过
enumerate从1开始计数,轻松生成符合要求的命名子列表输出
内容的提问来源于stack exchange,提问作者thanhbinh nguyen
相关产品推荐
相关产品推荐

