如何基于以'>'开头的元素对Python列表项进行分组合并?
问题解决:合并指定区间内的字符串
给定列表 my_list = ['>A1', 'KKKKKKKK', 'DDDDDDDD', '>A2', 'FFFFFFFF', 'FFFFOOOO', 'DAA', '>A3', 'OOOZDDD', 'KKAZAAA', 'A'],需要将每个>开头元素之后、下一个>开头元素之前的字符串合并,得到目标列表['KKKKKKKKDDDDDDDD', 'FFFFFFFFFFFFOOOODAA', 'OOOZDDDKKAZAAAA']。
原代码的问题
while my_list[item] != '>'条件逻辑错误:当前item对应的元素已经是>开头的,这个条件永远不满足,导致temp始终为空。- 没有正确遍历后续元素收集内容,也没有在完成一组收集后将
temp添加到结果列表的正确时机。
正确实现代码
my_list = ['>A1', 'KKKKKKKK', 'DDDDDDDD', '>A2', 'FFFFFFFF', 'FFFFOOOO', 'DAA', '>A3', 'OOOZDDD', 'KKAZAAA', 'A'] result = [] current_group = '' for item in my_list: if item.startswith('>'): # 如果当前组已有内容,先加入结果再重置 if current_group: result.append(current_group) current_group = '' else: # 非>开头的元素,加入当前组 current_group += item # 最后一组没有后续的>,需要手动加入结果 if current_group: result.append(current_group) print(result) # 输出: ['KKKKKKKKDDDDDDDD', 'FFFFFFFFFFFFOOOODAA', 'OOOZDDDKKAZAAAA']
代码说明
- 用
current_group临时存储当前需要合并的字符串。 - 遍历每个元素时:
- 遇到
>开头的元素,若current_group不为空,说明上一组收集完成,将其加入result并重置current_group。 - 非
>开头的元素直接追加到current_group。
- 遇到
- 遍历结束后,最后一组没有后续的
>触发添加操作,所以需要手动将剩余的current_group加入result。
内容的提问来源于stack exchange,提问作者Trigon
相关产品推荐
相关产品推荐

