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

Python函数remove_duplicates返回空列表,求问题原因排查

问题分析与修复方案

让我来帮你拆解这段代码里的问题,为啥会返回空列表~

首先看你的原代码:

def remove_duplicates(sequence): 
    k = [] 
    for x in sequence: 
        for i in k: 
            if x != i: 
                k.append(x) 
            else: 
                k = k 
    return k 

核心错误点

  • 内层循环的执行时机问题:当k是空列表时,for i in k这个循环根本不会运行。也就是说,第一个元素进入外层循环时,内层循环直接跳过,没有任何代码把它添加到k里。后面的元素也一样,k始终是空,最后自然返回[]。
  • 内层循环逻辑完全错误:就算k里有元素,你的逻辑是「只要和k里某一个元素不相等,就把x加进去」——这会导致重复添加。比如k里已经有[1],x=2时会被正常添加;但如果k里是[1,2],x=2时,第一个对比i=1,因为x!=i就会把2又append进去,变成[1,2,2],之后对比i=2时的else操作(k = k)完全是无效的,对列表没有任何改变。

修复后的代码

方案1:保持原列表顺序的去重(推荐)

这个写法直接检查元素是否已在结果列表中,不在就添加,逻辑清晰且保留原始顺序:

def remove_duplicates(sequence):
    k = []
    for x in sequence:
        if x not in k:
            k.append(x)
    return k

方案2:不关心顺序的快速去重

如果不需要保持元素的原始顺序,可以利用Python集合自动去重的特性,代码更简洁:

def remove_duplicates(sequence):
    return list(set(sequence))

注意:集合是无序的,所以这个方法会打乱原列表的元素顺序,比如输入[2,1,2],返回的可能是[1,2]或[2,1]。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:29:34