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

Python使用for循环删除列表重复值时count计数异常问题

Python重复元素删除代码计数异常原因

你提供的代码如下:

list = [1,1,3,4,5,5,5,6]
count = 0
for i in range(len(list)):
    for k in range(len(list)):
        if i == k :
            continue
        elif list[i] == list[k]:
            del list[k]
            list.append("0")
            count = count + 1

print(count)
print(list)

核心问题点

  • 重复统计追加的填充0:你每删除一个元素就向末尾追加"0",后续循环遍历到填充的"0"时,只要两个索引位置的元素都是"0",就会被判定为重复元素触发删除和计数逻辑,这是count数值远超预期的最主要原因。
  • 遍历逻辑未过滤已处理的有效元素:你没有标记已经完成去重的元素,同一个重复项会被多次判定:比如索引0的1和索引1的1重复,删除索引1的1后,当外层循环遍历到索引1时(此时该位置已经是后续前移的3)不会有问题,但当外层循环遍历到后面的"0"元素时,所有"0"会互相判定为重复,反复触发计数。
  • 动态修改列表时的索引偏移问题:你在遍历过程中删除列表元素,会导致当前k索引之后的元素整体前移一位,但k值会继续按原顺序递增,会跳过部分元素的校验,进一步打乱去重逻辑。

修正方案参考

如果要实现需求,可以先记录原始列表的有效元素范围,用集合记录已经出现过的元素,单次遍历即可完成:

original_list = [1,1,3,4,5,5,5,6]
seen = set()
count = 0
res = []
for num in original_list:
    if num not in seen:
        seen.add(num)
        res.append(num)
    else:
        count +=1
# 末尾补0
res += ["0"]*count
print(count) # 输出3
print(res) # 输出[1,3,4,5,6,"0","0","0"]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 11:09:03