如何将列表中连续重复元素分组生成嵌套列表且不合并间隔同值元素
连续相同元素分组实现方案
核心逻辑
只需要遍历原列表,维护当前正在累积的连续分组即可:每次遇到和当前分组元素值相同的内容就加入当前分组,遇到不同值就将当前分组存入结果、并开启新的分组,天然不会把被其他元素隔开的同值元素合并到同一分组。
Python 实现示例
方法1:使用内置库itertools.groupby
Python标准库的groupby默认就是按连续相同元素分组,直接适配需求:
from itertools import groupby A = [1,3,3,3,3,4,4,4,6,6,6,6,3,3,4,4,4,4,5] B = [list(group) for _, group in groupby(A)]
方法2:手动遍历实现(无依赖,可迁移到其他语言)
如果不想依赖内置库,或者需要在其他语言里实现同逻辑,可以用通用遍历写法:
A = [1,3,3,3,3,4,4,4,6,6,6,6,3,3,4,4,4,4,5] B = [] if not A: print(B) exit() current_group = [A[0]] for item in A[1:]: if item == current_group[0]: current_group.append(item) else: B.append(current_group) current_group = [item] # 遍历结束后把最后一个分组加入结果 B.append(current_group)
两种方法输出的B都和你要求的结构完全一致。
内容的提问来源于stack exchange,提问作者tcokyasar
相关产品推荐
相关产品推荐

