python的列表list可以用for循环进行遍历,实际开发中发现一个问题,就是遍历的时候删除会出错,例如

l = [1,2,3,4]
for i in l:
    if i != 4:
    l.remove(i)
print l
这几句话本来意图是想清空列表l,只留元素4,但是实际跑起来并不是那个结果。再看下面,利用index来遍历删除列表l
 
l = [1, 2, 3, 4]
for i in range(len(l)):
    if l[i] == 4:
        del l[i]

print l

这样没问题,可以遍历删除,但是列表l如果变为 l = [1,2,3,4,5]
如果还是按照上面的方法,设想一下,range开始的范围是0-4,中间遍历的时候删除了一个元素4,这个时候列表变成了= [1,2,3,5],这时候就会报错了,提示下标超出了数组的表示,原因就是上面说的遍历的时候删除了元素
 
所以python的list在遍历的时候删除元素一定要小心
 
可以使用filter过滤返回新的list
 
l = [1,2,3,4]
l = filter(lambda x:x !=4,l)
print l
 
这样可以安全删除l中值为4的元素了,filter要求两个参数,第一个是规则函数,第二个参数要求输入序列,而lambda这个函数的作用就是产生一个函数,是一种紧凑小函数的写法,一般简单的函数可以这么些
 
或者可以这样
l = [1,2,3,4]
l = [ i for i in l if i !=4]//同样产生一个新序列,复值给l
print l
 
或者干脆建立新的list存放要删除的元素
l = [1,2,3,4]
dellist = []
for i in l:
    if i == 4:
        dellist.append(i)
for i in dellist:
    l.remove(i)
这样也能安全删除元素
所以要遍历的时候删除元素一定要小心,特别是有些操作并不报错,但却没有达到预期的效果
 
上面说到产生新序列,赋值等等,用python的id()这个内置函数来看对象的id,可以理解为内存中的地址,所以有个简要说明
如果
l = [1,2,3,4]
ll = l
l.remove(1)
print l//肯定是[2,3,4]
print ll//这里会是什么?
如果用id函数查看的话就发现
print id(l),id(ll)
打印出相同的号码,说明他们其实是一个值,也就是说上面的print ll将和l打印的一样,所以python有这种性质,用的时候注意一下就行了

转载于:https://www.cnblogs.com/hanjialong/p/6882515.html

python 的列表遍历删除相关推荐

  1. python在列表末尾删除一个_从链接列表的尾部移除(Python)

    我是Python新手,在实现从链接列表中删除最后一个节点的函数时遇到了困难.这是我到目前为止的代码(我在一个名为Coderunner的在线平台上编写代码,该平台已经为我实现了一些背景代码,比如Node ...

  2. python正则判断列表是否有元素,python – 从列表中删除正则表达式元素

    我使用python 2.7. 我在文件'a'中有数据: myname1@abc.com;description1 myname2@abc.org;description2 myname3@this_i ...

  3. python中列表的删除操作

    增加: ceshi = ['a','b','c','d','e','f']ceshi.append('g') print(ceshi) #['a','b','c','d','e','f','g'],是 ...

  4. python对列表的删除,挺有意思的东西

    为什么80%的码农都做不了架构师?>>>    今天有点囧 a=['XXXX_game.sql', 'XXXX_game_sp.sql', 'XXXX_gamelog_sp.sql' ...

  5. Python之列表list删除元素

    本文上下文代码 person_dev_group = ["徐强","倍总","航神","大牛","tom&qu ...

  6. python统计列表中元素个数_python中计算一个列表中连续相同的元素个数方法

    python中计算一个列表中连续相同的元素个数方法 最简单的例子: a = [1,1,1,1,2,2,2,3,3,1,1,1,3] # 问:计算a中最多有几个连续的1 很明显,答案是4 如果用代码实现 ...

  7. python pop() ,如何在Python的列表或数组中移除元素

    python pop() ,如何在Python的列表或数组中移除元素 在本文中,你将学习如何使用Python内置的 pop() 方法,最后,你将知道如何使用 pop() 从 Python 中的列表中删 ...

  8. Python语法糖——遍历列表时删除元素

    Python的for可以遍历一个List,但是在遍历的过程中删除元素常常会得到意想不到的结果甚至程序出现异常,例如: lst = [1, 1, 0, 2, 0, 0, 8, 3, 0, 2, 5, 0 ...

  9. python 遍历list删除元素_详解Python遍历列表时删除元素的正确做法

    这篇文章主要介绍了详解Python遍历列表时删除元素的正确做法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 一.问题描述 这是 ...

最新文章

  1. unity3d中旋转
  2. html android canvas兼容_快来!这里有5分钟看完马上学会的HTML基础大全
  3. mysql读书笔记---if语句
  4. Docker笔记3 docker的数据管理
  5. 负数的二进制转换方法
  6. android如何用mumu模拟器,如何安装网易MuMu模拟器 MuMu模拟器怎么用
  7. 【dp】【斜率优化】土地购买
  8. 计算机专业考信息安全研究生,我是计算机科学与技术专业的学生,想考信息安全的研究生,我们本专业涉及的知识主要是计算机的组成原理,...
  9. Debugging Events
  10. mysql workbench pk_mysql workbench建表时PK,NN,UQ,BIN,UN,ZF,AI_MySQL - numeric
  11. 通过getPixel();和通过bmp.getPixels();方法遍历整张图片的效率比较。
  12. 名帖57 虞世南 小楷《演连珠》
  13. Android Rooting for Programmers
  14. 运用区块链溯源有什么意义呢?
  15. 亚马逊asin关键词排名追踪_图文实操:手把手教你优化亚马逊关键词的自然排名!...
  16. 无需再怨恨“刘海屏”了,因为适配十分简单
  17. UltraEdit--用法--快捷键/配置/背景色/字体大小
  18. mysql被删库如何恢复_mysql整个数据库被删除了怎么恢复
  19. java 打印表格文件
  20. 一个非常好用的随机密码生成方法

热门文章

  1. Latex中定义、定理、引理、证明 设置方法总结
  2. 超出想象-超级终端显示器
  3. Python MySQL(MySQLdb)
  4. [Java] 蓝桥杯ADV-202 算法提高 最长公共子序列
  5. [Python] L1-022. 奇偶分家-PAT团体程序设计天梯赛GPLT
  6. PAT 1074. 宇宙无敌加法器(20)-PAT乙级真题
  7. 蓝桥杯 ADV-119 算法提高 6-9删除数组中的0元素
  8. PAT 1067. 试密码(20)-乙级
  9. c语言编写自动生成密码,c语言密码生成.doc
  10. Linux系统不同主机之间的时间同步