python 遍历list并删除部分元素
https://blog.csdn.net/afgasdg/article/details/82844403
有两个list,list_1 为0-9,list_2 为0-4,需要删除list_1中包含在list_2中的元素

list_1 =[]
for i in range(10):
    list_1.append(str(i))

1
    2
    3

1
    2
    3

list_1

1

1

['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']

1

list_2 =[]
for i in range(5):
    list_2.append(str(i))

1
    2
    3

1
    2
    3

list_2

1

1

['0', '1', '2', '3', '4']

1

为了提高执行效率,可以将大的list转成set

set_2 = set(list_2)

1

1

set_2

1

1

{'0', '1', '2', '3', '4'}

1

错误删除方式1

直接遍历list并删除元素,这种方式会导致删除之后的元素前移,后漏掉一部分元素

temp = list_1[:]
for item in temp:
    if item in set_2:
        temp.remove(item)

1
    2
    3
    4

1
    2
    3
    4

"列表长度:%d, 列表:%s" % (len(temp), temp)

1

1

"列表长度:7, 列表:['1', '3', '5', '6', '7', '8', '9']"

1

错误删除方式2

使用下标遍历输出,删除元素,同样也会出现删除只有的元素前移导致漏掉部分元素

temp = list_1[:]
for i in range(len(temp)):
    try:
        if temp[i] in set_2:
            temp.pop(i)
    except:# 这里下标会越界,为了结果好看,不做处理
        pass

1
    2
    3
    4
    5
    6
    7

1
    2
    3
    4
    5
    6
    7

"列表长度:%d, 列表:%s" % (len(temp), temp)

1

1

"列表长度:7, 列表:['1', '3', '5', '6', '7', '8', '9']"

1

正确方式1;倒序

倒序(保证 next 指向为未遍历过得)列表长度减少,但是next指向一直是为未遍历过的元素,并不会漏掉

temp = list_1[:]
for i in range(len(temp)-1, -1, -1):
    if temp[i] in set_2:
        temp.pop(i)

1
    2
    3
    4

1
    2
    3
    4

"列表长度:%d, 列表:%s" % (len(temp), temp)

1

1

"列表长度:5, 列表:['5', '6', '7', '8', '9']"

1

正确方式2;遍历复制数组,修改原数组

这种方式能保证遍历到所有元素

temp = list_1[:]
for item in temp[:]:
    if item in set_2:
        temp.remove(item)

1
    2
    3
    4

1
    2
    3
    4

"列表长度:%d, 列表:%s" % (len(temp), temp)

1

1

"列表长度:5, 列表:['5', '6', '7', '8', '9']"

1

正确方式3;遍历需要删除的数组

temp = list_1[:]
for item in set_2:
    try:
        temp.remove(item)
    except: # 这里元素不存在会抛异常
        pass

1
    2
    3
    4
    5
    6

1
    2
    3
    4
    5
    6

"列表长度:%d, 列表:%s" % (len(temp), temp)

1

1

"列表长度:5, 列表:['5', '6', '7', '8', '9']"

1

正确方式4;利用集合差集,不能保证顺序

temp = list_1[:]
temp = list(set(temp).difference(set_2))

1
    2

1
    2

"列表长度:%d, 列表:%s" % (len(temp), temp)

1

1

"列表长度:5, 列表:['8', '9', '5', '7', '6']"
---------------------  
作者:java爱好者  
来源:CSDN  
原文:https://blog.csdn.net/afgasdg/article/details/82844403  
版权声明:本文为博主原创文章,转载请附上博文链接!

python 遍历list并删除部分元素的更多相关文章

  1. python遍历当前目录并删除某文件

    #coding: utf-8 """ this programe is to clear driverlog below this dir __author__:the_ ...

  2. js 在array的遍历操作中修改arry中元素数量 出现的一些奇特的操作

    在js中array是属于复杂类型,在arr1=arr2得赋值操作中,arr1得到的值并不是arr2的value,而是一个指向引用.那么修改arr1的同时arr2读取的值也会同步变化,那么问题来了,上代 ...

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

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

  4. Python简单遍历字典及删除元素的方法

    Python简单遍历字典及删除元素的方法 这篇文章主要介绍了Python简单遍历字典及删除元素的方法,结合实例形式分析了Python遍历字典删除元素的操作方法与相关注意事项,需要的朋友可以参考下 具体 ...

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

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

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

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

  7. python循环删除列表元素常见错误与正确方法

    python循环删除列表元素 觉得有用的话,欢迎一起讨论相互学习~Follow Me 常见错误 常见错误一:使用固定长度循环删除列表元素 # 使用固定长度循环pop方法删除列表元素 num_list_ ...

  8. C#遍历List并删除某个或者几个元素的方法

    C#遍历List并删除某个或者几个元素的方法,你的第一反应使用什么方法实现呢?foreach? for? 如果是foreach,那么恭喜你,你答错了.如果你想到的是用for,那么你只是离成功进了一步. ...

  9. 正确在遍历中删除List元素

    最近在写代码的时候遇到了遍历时删除List元素的问题,在此写一篇博客记录一下. 一般而言,遍历List元素有以下三种方式: 使用普通for循环遍历 使用增强型for循环遍历 使用iterator遍历 ...

随机推荐

  1. TestNG源代码分析:依赖管理的实现

    TestNG源代码分析:依赖管理的实现 2018-03-19 1 背景 当case之间有依赖关系,有依赖关系的case,它们的执行顺序是有限制的.TestNG提供了依赖管理功能 2 基础理论 这个执行 ...

  2. wrk压测工具使用

    介绍分为四部分 1.wrk简述 2.wrk安装 3.wrk运行参数 4.wrk高级用法 1.wrk简述 当使用ab做压测的时候发现,ab的客户端消耗很大,而且测试时性能较差,测试redis,sprin ...

  3. moment.js返回本周

    项目中需要做个打卡的模块.里面有个模块需要返回当前这个星期从星期日到星期六的日期,如下图: 我是通过 moment.js 的 moment().day() 实现这个效果的,它的说明如下图: 关于这个插 ...

  4. python进行数据分析

    1.  python进行数据分析----线性回归 2. python进行数据分析------相关分析 3. python进行数据分析---python3卡方 4. 多重响应分析,多选题二分法思路 5. ...

  5. Core Animation 动画的使用:关键帧动画、基础动画、动画组

    首先让我们了解下什么是 Core Animation,Core Animation 为核心动画,他为图形渲染和动画提供了基础.使用核心动画,我们只需要设置起点.终点.关键帧等一些参数,剩下的工作核心动 ...

  6. python加快数据处理的方法

    1.一切数据库操作最好使用内网连接, 2.使用批量操作接口操作数据库,而不是多线程频繁操作单条数据 3.如果python进程的cpu使用率达到100%了,需要开启多进程.java单个进程cpu使用率在 ...

  7. mac yarn 安装

    通过HomeBrew安装 brew install yarn 升级yarn brew upgrade yarn 查看版本 yarn -v 1.15.2

  8. 重写 Ext.form.field 扩展功能

    直接代码,放项目overrides文件夹中即可 //重写类 表单父类 //支持allowBlank动态绑定 Ext.define("override.form.field.Base" ...

  9. [原]Jenkins(十二)---jenkins管理员用户无法登陆解决办法Access Denied

    /** * lihaibo * 文章内容都是根据自己工作情况实践得出. *如有错误,请指正 * 版权声明:本博客欢迎转发,但请保留原作者信息! http://www.cnblogs.com/horiz ...

  10. Fiddler如何捕捉DefaultHttpClient的HTTP请求

    实际开发中为了解决Ajax跨域请求问题,会通过一个同域的控制器在服务端代理请求目标的Web API并将结果返回.为了便于调试这类请求,我们希望通过Fiddler可以监控到这些请求.Fiddler官方给 ...