Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >python list.remove的坑

python list.remove的坑

作者头像
葫芦
发布于 2019-04-17 07:06:27
发布于 2019-04-17 07:06:27
98300
代码可运行
举报
文章被收录于专栏:葫芦葫芦
运行总次数:0
代码可运行

python中使用list的时候,通常需要用到移除其中某些元素,而remove函数就正好可以移除元素,所以就会想到循环遍历list,利用remove函数移除元素,例如下面一段代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> cl=[15, 14, 13, 12, 11, 10, 9, 8, 3008, 3007, 3010, 3009, 3012, 3011, 3014, 3013, 7, 1015, 2011, 2012, 2009, 2010, 2015, 2013, 2014, 2008, 1014, 1011, 1012, 1005, 1006, 1007, 1008, 1009, 1010, 1013, 3015]
>>> flu=[1002, 1003, 1005, 1006, 1008, 1009, 1011, 1013, 1015, 3003, 3006, 3008, 3010, 3013, 3014, 3015, 3011, 10, 12, 14, 15, 2003, 2005, 2008, 2010, 2013, 2015, 2006, 4901, 1001, 1004, 1007, 1010, 1012, 1014, 3001, 3002, 3004, 3007, 3009, 3012, 6, 7, 8, 9, 11, 13, 2001, 2002, 2004, 2007, 2009, 2011, 2012, 2014, 4001]

>>> for i in flu:
...     if i in cl:
...         print i
...         flu.remove(i)
...
1005
1008
1011
1015
3008
3013
3015
10
14
2008
2013
1007
1012
3007
3012
7
9
13
2009
2012
>>> flu
[1002, 1003, 1006, 1009, 1013, 3003, 3006, 3010, 3014, 3011, 12, 15, 2003, 2005, 2010, 2015, 2006, 4901, 1001, 1004, 1010, 1014, 3001, 3002, 3004, 3009, 6, 8, 11, 2001, 2002, 2004, 2007, 2011, 2014, 4001]

上面的一段代码期望实现的是删除list中等于8的元素,运行结果为:

删除之后仍然还有元素8,并没有完全删除,所以这种方法是有问题的,那么问题在哪呢?

那是因为list的遍历是基于下标的,当你删除其中的一个元素的时候,列表实际上已经发生了变化,该元素后面的所有元素都往前移动了一个位置,所以下次遍历的时候就会跳过该元素后面的一个元素。

解决方法:

从flu列表中删除cl列表中包含的元素。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> list(set(flu).difference(set(cl)))
[4001, 4901, 6, 1001, 1002, 1003, 1004, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 3001, 3002, 3003, 3004, 3006]
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017/11/23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Android之SystemServer介绍(一)
Android之zygote源码剖析(一) Android之zygote源码剖析(二) Android之zygote源码剖析(三) Android之SystemServer介绍(一)
李小白是一只喵
2021/03/12
5780
Android之zygote源码剖析(三)
Android之zygote源码剖析(一) Android之zygote源码剖析(二) Android之zygote源码剖析(三)
李小白是一只喵
2021/03/11
5900
Android之zygote源码剖析(三)
PAT乙级题目对应知识点分类梳理
题号:1002、1006、1009、1014、1021、1024、1031/1039、1042、1043、/1048/1052/1054/1058/1067/1079、1081/1084/1086、
全栈程序员站长
2022/08/19
4870
[WebSocket] 开发在线客服系统知识点-websocket返回状态码的含义
在读取一个websocket资源的时候,有时候会报错,就会返回一个状态码 这些状态码的含义是如下面列表: 0–999 保留段, 未使用. 1000 CLOSE_NORMAL 正常关闭; 无论为何目的而创建, 该链接都已成功完成任务. 1001 CLOSE_GOING_AWAY 终端离开, 可能因为服务端错误, 也可能因为浏览器正从打开连接的页面跳转离开. 1002 CLOSE_PROTOCOL_ERROR 由于协议错误而中断连接. 1003 CLOSE_UNS
唯一Chat
2022/06/27
9790
大数据面试SQL043-计算出完成订单数的众数
众数是描述数据集中趋势的一种方式,它特别适用于分类数据和顺序数据。在实际应用中,众数可以帮助我们了解数据的集中趋势,尤其是在数据分布不均匀时。
数据仓库晨曦
2024/02/28
2240
大数据面试SQL043-计算出完成订单数的众数
MySQL引入脚本文件.sql的一些技巧(高效快速)
第一步:(可视化操作创建的数据库表,也是可以直接转储sql语句出来,方便下次直接使用,就不用重新写sql语句了)
软件小生活
2021/08/16
7350
poj,zoj题目分类
ZOJ题目分类 初学者题: 1001 1037 1048 1049 1051 1067 1115 1151 1201 1205 1216 1240 1241 1242 1251 1292 1331 1334 1337 1338 1350 1365 1382 1383 1394 1402 1405 1414 1494 1514 1622 1715 1730 1755 1760 1763 1796 1813 1879 1889 1904 1915 1949 2001 2022 2099 2104 2108
triplebee
2018/01/12
8530
留存专题-基础数据生成
为完成留存数据,我们需要先准备相关数据,包含三份数据:日期维表、新增用户表、用户登录表。生成数据涉及不少知识点,之前基本都写过了,这里不再赘述。涉及函数如下。 space() split() posexplode() random() datediff() pow()
数据仓库晨曦
2024/12/19
1010
留存专题-基础数据生成
杭电OJ刷题指南
说起来刷题,很多大牛都会推荐LeetCode或者牛客网,这两个网站是刷题的好网站。但对新手来说,有一点难度,新手建议先去杭电OJ刷题,这里的题目难度不大,如果你是大一大二,或者其他专业转计算机专业的学生,可以先去杭电OJ刷题,本文为杭电OJ刷题指南。
Jasonangel
2021/05/28
5.4K0
ZOJ 3705 Applications
Recently, the ACM/ICPC team of Marjar University decided to choose some new members from freshmen to take part in the ACM/ICPC competitions of the next season. As a traditional elite university in ACM/ICPC, there is no doubt that application forms will fi
ShenduCC
2018/04/26
5990
Error Domain=NSURLErrorDomain Code=-999
    NSURLErrorCannotConnectToHost = -1004,
星宇大前端
2019/01/15
2.5K0
代码质量规则配置选项
除了配置严重性外,代码质量规则还有其他配置选项。 例如,可以将每个代码质量分析器配置为仅应用于代码库的特定部分。 通过向指定规则严重性和常规编辑器首选项的同一个 EditorConfig 文件添加键值对,可指定这些选项。
呆呆
2022/01/09
6700
Python黑客学习笔记:从HelloWorld到编写PoC(上)
本系列文章适合CS在读学生和万年工具党,本文会在英文原文的基础上做些修改,并适当增加些解释说明。 本篇包含原文的前几部分: 0x0 – Getting Started - 从零开始 0x1
FB客服
2018/02/05
1.4K0
Python黑客学习笔记:从HelloWorld到编写PoC(上)
初学C语言的学习计划
背景:很多同学在学习C语言的过程中,常常会遇到这样的问题,即“教材看完了,知识点也懂,但写不出来程序”,这段时间,我们通过长期与有多年C语言研究经验的教授、教师及企业资深研发工程师还有各大学有丰富竞赛经验的现役ACMer讨论得出结论:“知行合一,即知识理解与上机实践相结合!” 为此,我们充分利用本站中的训练场评测的OJ系统,有选择的设置了以侧重C语言本身的语法练习,及算法与数据结构兼顾的题目,并结合现高校中ACM集训队的训练方法,按知识点划分及难度梯度为广大同学提供每部分知识点对应的题目配套作为训练跟进,循
编程范 源代码公司
2018/04/16
7900
WebSocket断开原因、心跳机制防止自动断开连接
WebSocket断开的原因有很多,最好在WebSocket断开时,将错误打印出来。
安德玛
2022/03/09
18K0
Applications (ZOJ 3705)
题解:就是题目有点小长而已,可能会不想读题,但是题意蛮好理解的,就是根据条件模拟,计算pts。(送给队友zm、 qsh,你们不适合训练了。)
Lokinli
2023/03/09
2690
HDOJ的题目分类
1002 1004 1013 1015 1017 1020 1022 1029 1031 1033 1034 1035 1036 1037 1039 1042 1047 1048 1049 1050 1057 1062 1063 1064 1070 1073 1075 1082 1083 1084 1088 1106 1107 1113 1117 1119 1128 1129 1144 1148 1157 1161 1170 1172 1177 1197 1200 1201 1202 1205 1209 1212(大数取模) 1216(链表)1218 1219 1225 1228 1229 1230 1234 1235 1236 1237 1239 1250 1256 1259 1262 1263 1265 1266 1276 1279 1282 1283 1287 1296 1302 1303 1304 1305 1306 1309 1311 1314 复杂模拟
谙忆
2021/01/21
3920
深度残差网络+自适应参数化ReLU激活函数(调参记录13)
从以往的调参结果来看,过拟合是最主要的问题。本文在调参记录12的基础上,将层数减少,减到9个残差模块,再试一次。
用户6915903
2020/05/04
3580
深度残差网络+自适应参数化ReLU激活函数(调参记录13)
Mongo Shell小技巧
在MongoDB中,我们经常会和mongo shell打交道,通常情况下,我们不会修改mongo shell的配置,因为原生的配置已经足够我们应对日常中的问题了。
AsiaYe
2021/01/24
6700
「R」数据可视化6 : 曼哈顿图
在生物信息领域我们常常使用R语言对数据可视化。在对数据可视化的时候,我们需要明确想要展示的信息,从而选择最为合适的图突出该信息。本系列文章将介绍多种基于不同R包的作图方法,希望能够帮助到各位读者。
王诗翔呀
2020/07/06
3.4K0
「R」数据可视化6 : 曼哈顿图
相关推荐
Android之SystemServer介绍(一)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验