在原数组中删除重复的元素 | Python

来源:互联网 发布:python编程第四版云盘 编辑:程序博客网 时间:2024/05/11 12:46

在原数组中删除重复元素:假设 nums = [1,1,1,2,2,3,3,3,3,4]; 经过删除后,得到的结果为:nums=[1, 2, 3, 4]

数组在做增删时,需要借助index,操作起来比较麻烦(相对链表而言更难),个人觉得不适合用for 的方式控制指针运动,而是应当在循环体中控制指针更为容易。

可以先定义一个死循环,然后在循环体内部定义跳出条件。

def dropDuplicate(nums):    dic = {}    ptr = 0    while True:        if ptr>=len(nums):            break        if nums[ptr] in dic:            nums.pop(ptr)            ptr-=1        else:            dic[nums[ptr]]=1        ptr+=1            if __name__ =="__main__":    nums = [1,1,1,2,2,3,3,3,3,4]    dropDuplicate(nums)    print nums
上述代码中,ptr表示列表的指针,每轮循环指针前进一步,当删除元素时,指针应当停在原处,以便重新判断删除后该位置上的元素是否符合保留的条件。当指针即将发生越界时,提前跳出循环。