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

如何编写Python函数对列表去重,返回包含所有唯一元素的列表?

代码错误原因与修复方案

原代码存在两处核心逻辑错误,直接导致输出不符合预期:

  • 循环内遇到重复元素直接执行return(x),会立刻终止函数运行,直接返回第一个遇到的重复元素,不会继续遍历处理列表后续内容
  • 判断条件lst.count(x) == 1逻辑不符合去重要求:该条件只会把原列表中仅出现1次的元素加入结果,而去重需求是每个元素无论原本出现多少次,最终仅保留1次

你调用测试用例时,第一个遍历到的元素是row,调用lst.count('row')得到的结果是2,触发else分支直接返回row,这就是你得到当前输出的原因。


修复实现

方案1:保留元素首次出现的顺序(推荐,符合你给出的预期输出顺序)

如果需要保留列表中元素第一次出现的先后顺序,使用如下实现:

def make_unique(lst: list[str]) -> list[str]:
    res = []
    for item in lst:
        # 仅当元素还没被加入结果列表时才添加
        if item not in res:
            res.append(item)
    return res

调用print(make_unique(lst=['row','mun','row'])),输出为['row', 'mun'],完全符合预期。

方案2:无需保留顺序(实现最简单)

如果不需要保留原有元素的排列顺序,可以直接利用集合自动去重的特性,代码更简洁:

def make_unique(lst: list[str]) -> list[str]:
    return list(set(lst))

注意该方案输出的元素顺序不固定,Python 3.7+版本中虽然set也有插入顺序,但仍不建议依赖该特性做顺序敏感的去重。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 14:45:09