Python实现嵌套列表指定元素移至目标列表并统计数量
嵌套列表元素迁移与统计实现
需求说明
给定一个嵌套列表,部分子列表里的元素以[x]开头,需要完成以下操作:
- 把这些带
[x]前缀的元素从原属子列表中移除 - 去掉元素的
[x]前缀后,添加到列表的最后一个子列表(固定索引为2) - 统计并输出每个子列表中被移除的元素数量
示例展示
初始列表:
list1 = [['[x]homework', '[x]eat','stretch'], ['[x]final', 'school'], ['sleep','midterm']]
处理后列表:
list1 = [['stretch'], ['school'], ['sleep','midterm', 'homework', 'eat', 'final']]
预期控制台输出:
2 removed from 1st list 1 removed from 2nd list
实现代码
def process_nested_list(lst): # 遍历前两个子列表(最后一个是目标列表,无需处理) for idx, sublist in enumerate(lst[:-1], start=1): removed_count = 0 # 反向遍历子列表,避免删除元素时索引错位 for i in range(len(sublist)-1, -1, -1): item = sublist[i] if item.startswith('[x]'): # 去掉[x]前缀后添加到最后一个子列表 lst[-1].append(item[3:]) # 从原子列表移除当前元素 del sublist[i] removed_count += 1 # 输出统计结果 ordinal = "1st" if idx == 1 else "2nd" print(f"{removed_count} removed from {ordinal} list") # 测试示例 list1 = [['[x]homework', '[x]eat','stretch'], ['[x]final', 'school'], ['sleep','midterm']] process_nested_list(list1) print("\n处理后的列表:") print(list1)
代码说明
- 遍历范围控制:只处理前两个子列表,最后一个子列表作为目标容器,不需要检查移除元素
- 反向遍历删除:正向删除元素会导致后续元素索引偏移,反向遍历可以避免这个问题,确保每个元素都能被正确检查
- 前缀处理:通过
item[3:]截取[x]之后的内容([x]共3个字符),直接添加到最后一个子列表 - 统计输出:用
enumerate从1开始计数,根据序号输出对应的序数词(1st/2nd),符合示例格式
内容的提问来源于stack exchange,提问作者Silly Little Baka
相关产品推荐
相关产品推荐

