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]))