Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从已排序整数列表中就地删除重复元素_Python - Fatal编程技术网

Python 从已排序整数列表中就地删除重复元素

Python 从已排序整数列表中就地删除重复元素,python,Python,我想从列表中删除重复的元素,并返回只有唯一值的列表。这是我的密码 def remove_dup(nums): for i in range(1, len(nums)): if nums[i] == nums[i-1]: nums.remove(nums[i]) return nums 我正在使用以下内容测试代码: print(remove_dup([0,0,1,1,1,2,2,3,3,3,4])) 我希望输出是[1,2,3,4],但我得

我想从列表中删除重复的元素,并返回只有唯一值的列表。这是我的密码

def remove_dup(nums):
    for i in range(1, len(nums)):
        if nums[i] == nums[i-1]:
            nums.remove(nums[i])
    return nums
我正在使用以下内容测试代码:

print(remove_dup([0,0,1,1,1,2,2,3,3,3,4]))

我希望输出是[1,2,3,4],但我得到的是[0,1,1,2,3,3,4]。谁能解释一下,为什么

因为当删除元素时,您不应该在这些迭代中增加
i
。这会使您提前跳转两个元素。

将列表转换为如下所示的集合:

my_list = [0, 1, 1, 2, 3, 3, 4]
print(list(set(my_list)))
输出:

[0, 1, 2, 3, 4]

这回答了你的问题吗?您在对列表进行迭代的同时修改它(无论如何,索引),这几乎总是一个坏主意。要删除重复项,您只需将列表转换为一个集合,然后再转换为一个列表即可将列表转换为
set
,然后再转换为列表,非常简单。列表(集合([0,0,1,1,1,2,2,3,3,3,4]))