欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > python >内容正文

python

Python 循环列表删除元素的注意事项

发布时间:2025/3/20 python 21 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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 循环列表删除元素的注意事项的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。