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

Python仅用for循环、if-else实现列表/字符串去重 禁用set、空列表

原列表原地去重实现方案

约束规则

  • 仅允许使用for循环、if-else分支逻辑
  • 禁止调用set()、enumerate()、dict.fromkeys()等内置方法
  • 禁止新建空列表/数组存储去重结果,必须在原列表上完成修改
  • 去重逻辑:保留元素第一次出现的实例,删除后续所有重复项,剩余元素保持原有相对顺序

测试用例

给定测试列表:
a = ['aa', 'bb', 'cc', 'aa', 'dd', 'ee', 'aa', 'cc', 'ff']
预期处理结果:删除索引3、索引6位置的重复元素'aa',删除索引7位置的重复元素'cc',最终列表顺序为['aa', 'bb', 'cc', 'dd', 'ee', 'ff']

实现代码

a = ['aa', 'bb', 'cc', 'aa', 'dd', 'ee', 'aa', 'cc', 'ff']

# 从列表末尾向前倒序遍历索引,避免删除元素导致后续索引错位
for i in range(len(a) - 1, -1, -1):
    duplicate_flag = False
    # 遍历当前索引之前的所有元素,检查是否存在同值元素
    for j in range(i):
        if a[j] == a[i]:
            duplicate_flag = True
            break
    # 判定为重复元素则直接在原列表删除当前项
    if duplicate_flag:
        a.pop(i)

print(a)

逻辑说明

  • 采用倒序遍历而非正序遍历:删除靠后的重复元素时,前面未遍历的元素索引不会发生变化,不会出现漏遍历、索引越界的问题
  • 内层循环仅校验当前索引之前的元素:只要在当前位置之前出现过同值元素,就说明当前位置是重复项,直接删除即可,天然保证保留的是第一次出现的元素
  • 全程仅在原列表上执行pop()操作,没有新建额外列表存储结果,完全符合约束要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 06:45:44