替换连续重复元素:将列表连续重复元素转为元素名+数量格式
处理连续重复元素的列表转换问题
要实现将列表中连续重复元素转换为ElementNameElementNum格式(单个元素保持原样),可以通过遍历列表并跟踪连续元素的计数来完成。以下是Python的实现方案:
代码实现
def compress_consecutive_elements(lst): if not lst: return [] result = [] current_elem = lst[0] count = 1 for elem in lst[1:]: if elem == current_elem: count += 1 else: # 处理前一组连续元素 result.append(f"{current_elem}{count}" if count > 1 else current_elem) current_elem = elem count = 1 # 处理最后一组元素 result.append(f"{current_elem}{count}" if count > 1 else current_elem) return result # 测试示例 original_list = ["a", "a", "a", "a", "b", "b", "b", "c", "c", "a"] print(compress_consecutive_elements(original_list)) # 输出:['a4', 'b3', 'c2', 'a']
逻辑说明
- 初始化:先判断输入列表是否为空,为空直接返回空列表;否则将第一个元素设为当前跟踪元素,计数初始化为1。
- 遍历对比:从第二个元素开始遍历,若当前元素和跟踪元素相同,计数加1;若不同,则根据计数是否大于1,生成对应格式的字符串加入结果列表,随后更新跟踪元素和计数。
- 收尾处理:遍历结束后,处理最后一组连续元素,避免遗漏。
这种思路适用于大多数编程语言,核心都是跟踪连续元素的状态,遇到元素变化时完成前一组的格式转换。
内容的提问来源于stack exchange,提问作者Sarper Makas
相关产品推荐
相关产品推荐

