zoukankan      html  css  js  c++  java
  • python remove与del 的区别

    在leetcode中遇到一个题目涉及到数组的删除元素的操作:remove和del

    题目大意是将一个数组中的重复数据删除

    提交的代码如下(python3):

    '''
    Created on Aug 5, 2018
    
    @author: m24
    '''
    from math import inf
    class Solution(object):
        def removeDuplicates1(self, nums):
            if not nums: return None
            nums.sort()
            pre = float('inf')
    
            for idx,ele in enumerate(nums):
                if ele == pre: del(ele)
                else: pre = ele
            return nums
        def removeDuplicates2(self, nums):
            if not nums: return None
            nums.sort()
            pre,position = nums[0],1
            for _ in range(1, len(nums)):
                if nums[position] == pre: del(nums[position])
                else: 
                    pre = nums[position]
                    position += 1
            return nums
    
    A=Solution()
    
    print(A.removeDuplicates([0,1,2,2,3,0,4,2]))  #output:[0, 1, 2, 2, 3, 4]
    print(A.removeDuplicates1([0,1,2,2,3,0,4,2]))  #output:[0, 0, 1, 2, 2, 2, 3, 4]
    print(A.removeDuplicates2([0,1,2,2,3,0,4,2]))  #output:[0, 1, 2, 3, 4]
    

     根据代码执行及找到的资料总结如下:

      1、del删除的是对数据对象的引用,并不触及到数据本身,removeDuplicates2中使用del(ele)时,并没有改变数组本身对数据的索引,所以数组本身没有任何改变

      2、list的remove方法会将list中首次出现的元素删除,但在程序中,使用的是下标遍历的方法,在删除一个元素后,下标和实际将要访问的元素发生错位,导致错误

  • 相关阅读:
    ES monitoring
    my stackoverflow
    ES 监控
    Natural Language Processing 课程,文章,论文
    搜索引擎名著
    https://medium.com/netflix-techblog/linux-performance-analysis-in-60-000-milliseconds-accc10403c55
    MySQL 性能跟踪方法
    JAVA CAS原理深度分析 volatile,偏向锁,轻量级锁
    spark-architecture-shuffle
    Linux performance commands and tool
  • 原文地址:https://www.cnblogs.com/m2492565210/p/9426468.html
Copyright © 2011-2022 走看看