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二分查找的三种思路