如何合并列表中连续重复的'-'元素且不影响其他重复元素?
原代码的问题是没有限定仅合并连续的'-',对所有连续相等的元素都做了去重,同时存在索引异常的隐藏问题:当i=0时output[i-1]实际取到的是列表最后一个元素,若首元素和尾元素相同会被错误过滤。
修复方案1:遍历实现(可读性最优)
output = ['9', '-', '-', '7', '-', '4', '4', '-', '3', '-', '0', '2'] final = [] prev_item = None for item in output: # 仅跳过连续重复的'-' if item == '-' and prev_item == '-': continue final.append(item) prev_item = item # 如需拼接为字符串,执行: # res = ''.join(final) # 输出结果为 '9-7-44-3-02'
修复方案2:列表推导式实现
output = ['9', '-', '-', '7', '-', '4', '4', '-', '3', '-', '0', '2'] # 单独处理首个元素避免索引异常 final = [output[0]] + [output[i] for i in range(1, len(output)) if not (output[i] == '-' and output[i-1] == '-')]
内容的提问来源于stack exchange,提问作者MangoFanatic1337
相关产品推荐
相关产品推荐

