You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python:如何仅移除列表中指定元素的重复项保留其余重复项

优雅实现仅移除0的所有重复项

嘿,这个需求很清晰——只删掉所有重复的0,其他元素的重复项完整保留对吧?你的当前方案思路没问题,但可以优化得更简洁或者高效,这里有两种不错的实现方式:

方法一:列表推导式+条件拼接

这种方式把你的两步操作合并成一行,还能兼容原列表中没有0的情况(避免不必要地添加0):

mylist = [4, 1, 2, 6, 1, 0, 9, 8, 0, 9]
result = [i for i in mylist if i != 0] + ([0] if 0 in mylist else [])

执行后result就是[4, 1, 2, 6, 1, 9, 8, 9, 0],完美符合需求。这种写法简洁直观,适合大多数场景。

方法二:生成器遍历(单次遍历更高效)

如果你的列表很大,想要更高的执行效率,可以用生成器只遍历一次列表,同时跟踪是否已经保留过0:

def retain_single_zero(lst):
    zero_kept = False
    for item in lst:
        if item != 0:
            yield item
        elif not zero_kept:
            yield item
            zero_kept = True

mylist = [4, 1, 2, 6, 1, 0, 9, 8, 0, 9]
result = list(retain_single_zero(mylist))

这个方法的优势是只遍历一次列表,而且完全保持原列表的元素顺序(包括第一个0的位置),执行结果是[4, 1, 2, 6, 1, 0, 9, 8, 9],比第一种方法更贴合原列表的结构。

这两种方法都不用手动计数,比遍历计数的写法更优雅,你可以根据实际场景选择~

内容的提问来源于stack exchange,提问作者Cryn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:44:41