Python的注释方法有几种?请详细说明每种方法,python如何整体注释
之前不太懂leetcode里的题目,就录下来了。
题目:移动零,给定一个数组nums,写一个函数将所有零移动到它的末尾,同时保持非零元素的相对顺序(Python3环境)。
例如:
您必须在原始数组上操作。不要为新阵列分配额外空间。
最大限度地减少操作总数
1.在编程的过程中,我首先想到了remove函数:
class solution(object):defmove zeros(self,nums):for I in range(len(nums)):if nums[I]==0:
nums.remove(nums[i])
nums.append(0)返回nums
a=Solution()print(a . move zeros([1,0,0,3])
结果是正确的[1,3,0,0]
2.后来想到了del函数。
class solution(object):defmove zeros(self,nums):for I in range(len(nums)):if nums[I]==0:del(nums[I])
nums.append(0)返回nums
a=Solution()print(a . move zeros([1,0,0,3])
结果是错误的:[1,0,3,0]
3.之前没有深究过这两个功能的区别,突然想在这里深究一下。
按照我们正常的思维,考虑以上两个方案。给定list nums=[1,0,0,3],在for循环中,当i=0时,不进行处理;
当i=1,nums[1]=0,删除nums[1]=0,然后在末尾再加一个0,nums就变成nums=[1,0,3,0];
当i=2时,则nums[2]=3,不做任何处理;
当i=3,nums[3]=0时,删除nums[3]=0,然后在末尾再加一个0,nums就变成nums=[1,0,3,0];
可见我们考虑的最终结果和del函数的处理是一样的,那么为什么remove函数不一样呢?
原因是:
(1)remove删除列表中第一个出现的元素。在第一个程序中,当i=3,nums=[1,0,3,0],nums[3]=0,
当执行这个nums.remove(nums[3])操作时,将找到并删除列表中第一个出现的0。
(del删除的是那个索引的元素。在第二个程序中,当i=3,nums=[1,0,3,0],nums[3]=0,
当执行这个nums.remove(nums[3])操作时,nums[3]中位于索引3位置的元素将被删除。
4.对于第二个程序的调试:
class solution(object):defmove zeros(self,nums):index=0 for I in range(len(nums)):if nums[index]==0:del(nums[index])
nums.append(0)else:
指数=1
returnnums
a=Solution()print(a . move zeros([1,0,0,3])
注:I只是运算次数的循环,循环中完全可以省略。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。