错误示范:

 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]

解决方式:

① 使用尾递归方式

 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]

② 使用 while 循环的方式

 class Solution:
def removeElement(self, nums, val: int) -> int:
i = 0
while i < len(nums):
print('i=', i, ', num=', nums[i], ', nums=', nums)
if nums[i] == val:
nums.pop(i)
else:
i += 1
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= 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]

③ 对整个序列使用切片来创建一个临时副本

 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]

Python 循环列表删除元素的注意事项的更多相关文章

  1. Python循环列表删除元素问题

    有人会遇到这种问题,遍历列表,想删除列表中的某几个元素,执行后发现有些并没有删除到, 比如以下代码 a=[1,2,3,4,5,6]print(a) for i in a: if i==3 or i== ...

  2. Python list列表修改元素

    Python 提供了两种修改列表(list)元素的方法,你可以每次修改单个元素,也可以每次修改一组元素(多个). 修改单个元素 修改单个元素非常简单,直接对元素赋值即可.请看下面的例子: nums = ...

  3. Python循环列表的方法

    python循环列表的几种方法: 第一,依次打印列表中的各项值. 1 #!usr/bin/env python3 2 #!-*- Coding:utf-8 -*- 3 4 ''' 5 多种循环列表的方 ...

  4. python中列表删除和多重循环退出

    在学习python的时候,会有一些梗非常不适应,在此列举列表删除和多重循环退出的例子: 列表删除里面的坑 比如我们有一个列表里面有很多相同的值,假如:nums=[1,6,6,3,6,2,10,2,10 ...

  5. Python遍历列表删除多个列表元素

    在遍历list的时候,删除符合条件的数据,结果不符合预期 num_list = [1, 2, 2, 2, 3] print(num_list) for item in num_list: if ite ...

  6. python遍历列表删除多个元素的坑

    如下代码,遍历列表,删除列表中的偶数时,结果与预期不符. a = [11, 20, 4, 5, 16, 28] for i in a: if i % 2 == 0: a.remove(i) print ...

  7. Python遍历列表删除多个元素或者重复元素

    在遍历list的时候,删除符合条件的数据,结果不符合预期   num_list = [1, 2, 2, 2, 3] print(num_list) for item in num_list: if i ...

  8. python中列表中元素的增删改查

    增: append : 默认添加到列表的最后一个位置 insert : 可以通过下标添加到列表的任意位置 extend: a.extend[b] --将b列表的元素全加入到列表b中 删; remove ...

  9. javascript在数组的循环中删除元素

    在开发JavaScript应用的过程中,经常会遇到在循环中移除指定元素的需求. 按照常规的思路,就是对数组进行一个for循环,然后在循环里面进行if判断,在判断中删除掉指定元素即可. 但是实际情况往往 ...

随机推荐

  1. JavaWeb(四):JDBC

    数据持久化(persistence) 把数据保存到可掉电式存储设备中以供之后使用. 大多数情况下,特别是企业级应用,数据持久化意味着将内存中的数据保存到硬盘上加以”固化”,而持久化的实现过程大多通过各 ...

  2. Change the environment variable for python code running

    python程序运行中改变环境变量: Trying to change the way the loader works for a running Python is very tricky; pr ...

  3. LDD3 第15章 内存映射和DMA

    本章内容分为三个部分: 第一部分讲述了mmap系统调用的实现过程.将设备内存直接映射到用户进程的地址空间,尽管不是所有设备都需要,但是能显著的提高设备性能. 如何跨越边界直接访问用户空间的内存页,一些 ...

  4. FastDFS整合nginx(三)

    一 安装 百度云:所有附件的地址 unzip fastdfs-nginx-module-master.zip [root@node02 mnt]# cd fastdfs-nginx-module-ma ...

  5. div页面布局基本布局知识

    页面代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...

  6. div 上禁止复制的css实现方法

    div { -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-se ...

  7. LNMP环境搭建最好用的两种方法(亲测)

    经历了一个PHP服务器项目,手动编译部署PHP,Swoole环境太让人郁闷了,所以尝试过两种不错的方法,分享出来方便同样经历痛苦的coder. 第一种方式: 安装LNMP按照这里的步骤执行,网址戳我 ...

  8. Oracle-创建索引分区

    对大数据量索引进行分区同样能够优化应用系统的性能.一般来说,如果索引所对应的表的数据量非常大,比如几百万甚至上千万条数据,则索引也会占用很大的空间,这时,建议对索引进行分区. Oracle索引分区分为 ...

  9. HTTP 协议解析

    目录 目录 HTTP 协议 HTTP 协议工作原理 HTTP Request 请求行 Request Header HTTP Response 状态行 Response Header Body HTT ...

  10. 用 Flask 来写个轻博客 (37) — 在 Github 上为第一阶段的版本打 Tag

    Blog 项目源码:https://github.com/JmilkFan/JmilkFan-s-Blog 目录 目录 前文列表 第一阶段结语 打 Tag 前文列表 用 Flask 来写个轻博客 (1 ...