Python 循环列表删除元素的注意事项
生活随笔
收集整理的这篇文章主要介绍了
Python 循环列表删除元素的注意事项
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
错误示范:
class Solution:def removeElement(self, nums, val: int) -> int:for i, num in enumerate(nums):print('i=', i, ', num=', num, ', nums=', nums)if num == val:nums.remove(val)return len(nums)s = Solution() s.removeElement([2, 0,1,2,2,3,0,4,2], 2) # i= 0 , num= 2 , nums= [2, 0, 1, 2, 2, 3, 0, 4, 2] # i= 1 , num= 1 , nums= [0, 1, 2, 2, 3, 0, 4, 2] # i= 2 , num= 2 , nums= [0, 1, 2, 2, 3, 0, 4, 2] # i= 3 , num= 3 , nums= [0, 1, 2, 3, 0, 4, 2] # i= 4 , num= 0 , nums= [0, 1, 2, 3, 0, 4, 2] # i= 5 , num= 4 , nums= [0, 1, 2, 3, 0, 4, 2] # i= 6 , num= 2 , nums= [0, 1, 2, 3, 0, 4, 2]解决方式:
1.使用尾递归方式
class Solution:def removeElement(self, nums, val: int) -> int:for i, num in enumerate(nums[::-1]):print('i=', i, ', num=', num, ', nums=', nums)if num == val:nums.remove(val)return len(nums)s = Solution() s.removeElement([2, 0,1,2,2,3,0,4,2], 2) # i= 0 , num= 2 , nums= [2, 0, 1, 2, 2, 3, 0, 4, 2] # i= 1 , num= 4 , nums= [0, 1, 2, 2, 3, 0, 4, 2] # i= 2 , num= 0 , nums= [0, 1, 2, 2, 3, 0, 4, 2] # i= 3 , num= 3 , nums= [0, 1, 2, 2, 3, 0, 4, 2] # i= 4 , num= 2 , nums= [0, 1, 2, 2, 3, 0, 4, 2] # i= 5 , num= 2 , nums= [0, 1, 2, 3, 0, 4, 2] # i= 6 , num= 1 , nums= [0, 1, 3, 0, 4, 2] # i= 7 , num= 0 , nums= [0, 1, 3, 0, 4, 2] # i= 8 , num= 2 , nums= [0, 1, 3, 0, 4, 2]2.使用 while 循环的方式
''' 遇到问题没人解答?小编创建了一个Python学习交流QQ群:778463939 寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书! ''' class Solution:def removeElement(self, nums, val: int) -> int:i = 0while i < len(nums):print('i=', i, ', num=', nums[i], ', nums=', nums)if nums[i] == val:nums.pop(i)else:i += 1return len(nums)s = Solution() s.removeElement([2, 0,1,2,2,3,0,4,2], 2) # i= 0 , num= 2 , nums= [2, 0, 1, 2, 2, 3, 0, 4, 2] # i= 0 , num= 0 , nums= [0, 1, 2, 2, 3, 0, 4, 2] # i= 1 , num= 1 , nums= [0, 1, 2, 2, 3, 0, 4, 2] # i= 2 , num= 2 , nums= [0, 1, 2, 2, 3, 0, 4, 2] # i= 2 , num= 2 , nums= [0, 1, 2, 3, 0, 4, 2] # i= 2 , num= 3 , nums= [0, 1, 3, 0, 4, 2] # i= 3 , num= 0 , nums= [0, 1, 3, 0, 4, 2] # i= 4 , num= 4 , nums= [0, 1, 3, 0, 4, 2] # i= 5 , num= 2 , nums= [0, 1, 3, 0, 4, 2]3.对整个序列使用切片来创建一个临时副本
class Solution:def removeElement(self, nums, val: int) -> int:for i, num in enumerate(nums[:]):print('i=', i, ', num=', num, ', nums=', nums)if num == val:nums.remove(val)return len(nums)s = Solution() s.removeElement([2, 0,1,2,2,3,0,4,2], 2) # i= 0 , num= 2 , nums= [2, 0, 1, 2, 2, 3, 0, 4, 2] # i= 1 , num= 0 , nums= [0, 1, 2, 2, 3, 0, 4, 2] # i= 2 , num= 1 , nums= [0, 1, 2, 2, 3, 0, 4, 2] # i= 3 , num= 2 , nums= [0, 1, 2, 2, 3, 0, 4, 2] # i= 4 , num= 2 , nums= [0, 1, 2, 3, 0, 4, 2] # i= 5 , num= 3 , nums= [0, 1, 3, 0, 4, 2] # i= 6 , num= 0 , nums= [0, 1, 3, 0, 4, 2] # i= 7 , num= 4 , nums= [0, 1, 3, 0, 4, 2] # i= 8 , num= 2 , nums= [0, 1, 3, 0, 4, 2] 与50位技术专家面对面20年技术见证,附赠技术全景图总结
以上是生活随笔为你收集整理的Python 循环列表删除元素的注意事项的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: Python文件操作中进行字符串替换(保
- 下一篇: Python二分查找的三种思路