问题来源
删除列表中的指定元素

描述:
输入一个整数列表,并输入一个整数x,删除列表中所有值为x的数,再输出列表。

问题代码

a = list(eval(input()))
x = eval(input())
for i in a:if i==x:a.remove(i)
print(a)

输入:3,4,1,1,1,7,9,1 1
输出:[3, 4, 7, 9,1]

可以发现,列表中的1并未完全去除。

原因:用for发起任何形式的遍历时,它的遍历顺序是一开始就确定的,而在遍历中删除了元素导致了当前索引的变化。整个列表的元素向前移动,但i却在最初就确定了,所以导致漏删元素。

解决方法
1.最简单的方法

a = list(eval(input()))
x = eval(input())
for i in a[:]:if i==x:a.remove(i)
print(a)

2.使用filter()函数过滤掉符合指定条件的元素。

a = list(eval(input()))
x = eval(input())
print(list(filter(lambda y: y != x, a)))

3.使用列表解析式。

a = list(eval(input()))
x = eval(input())
b = [i for i in a if i != x]
print(b)

4.利用深拷贝

import copy
a = list(eval(input()))
x = eval(input())
b = copy.deepcopy(a)
for i in a:if i == x:b.remove(i)
print(b)

Tip:不可以直接b=a,因为这样因为新变量和原变量的物理地址仍旧是相同的。

5.使用while循环

a = list(eval(input()))
x = eval(input())
while x in a:a.remove(x)
print(a)

6.倒序删除

a = list(eval(input()))
x = eval(input())
for i in range(len(a)-1,-1,-1):if a[i] == x:a.remove(x)
print(a)

因为列表总是“向前移”,所以可以倒序遍历,即使后面的元素被修改了,还没有被遍历的元素和其坐标仍保持不变,不过会可能导致遍历长度大于列表的长度。

参考:
链接: Python–遍历列表时删除元素的正确做法.
链接: Python遍历列表时删除元素

Python遍历列表时删除元素的几种方法相关推荐

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

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

  2. Python - 遍历列表时删除元素的正确做法

    Python-遍历列表时删除元素的正确做法 一.问题描述 因为删除元素后,整个列表的元素会往前移动,而i却是在最初就已经确定了,是不断增大的,所以并不能得到想要的结果. 问题现象如下: a = [1, ...

  3. Python遍历列表时删除元素

    无论是使用for还是while,当在从前往后遍历的同时删除列表中的元素时,都会发生些问题. 要从lst = [1,4,0,1,5,0,3,5]中删除所有0元素,有两个比较好的方法: 1 使用filte ...

  4. Python遍历列表时删除元素的正确做法

    先看两种错误遍历删除演示 错误演示一:要求删除除了4以外的元素 lis = [1,2,3,4] for i in lis:print(i)print("删除前",lis,id(li ...

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

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

  6. 《 Python List列表全实例详解系列(四)》__列表删除元素(4种方法)删除重复元素(去重)(8种方法)

    <  Python List列表全实例详解系列(四)> __列表删除元素(4种方法)删除重复元素(去重)(8种方法) 我的技术成长&学习资料整理分享之路 我遇到问题查找资料时,经常 ...

  7. php 从数组里删除元素,PHP从数组中删除元素的四种方法实例

    PHP从数组中删除元素的四种方法实例 一.总结 一句话总结:unset(),array_splice(),array_diff(),array_diff_key() 二.PHP从数组中删除元素的四种方 ...

  8. vector 删除元素的几种方法

    vector 删除元素的几种方法 1.利用成员函数pop_back()可以删除最后一个元素: 2.利用成员函数erase()可以删除由一个iterator指出的元素: 3.通过STL中的算法库函数re ...

  9. Python遍历列表时其中的删除元素_CodingPark编程公园

    遍历列表时其中的删除元素 删除列表中的元素我们通常会用 .remove( ) 因为删除元素后,整个列表的元素会往前移动,而i却是在最初就已经确定了,是不断增大的,所以并不能得到想要的结果. 所以会造成 ...

最新文章

  1. C# Window编程随记——ClickOnce程序部署
  2. 【Java】LeetCode 150. 逆波兰表达式求值 (后缀表达式)
  3. Devexpress 重新编译以后 重新生成DEMO
  4. 人眼中亮斑的检测、定位和去除(3)
  5. rhel7安装vnc出现error: Failed dependencies:
  6. 两个实用的Python的装饰器
  7. JAVA实现AES 解密报错Input length must be multiple of 16 when decrypting with padded cipher
  8. 互联网寒冬来袭,有一家公司却逆流而上!
  9. 计算机随机数字excel,excel随机生成数字_随机不随意
  10. python怎么控制小数点位数_谈谈关于Python里面小数点精度控制的问题
  11. (二)为AI时尚分类准备数据
  12. 华为正式开源数据虚拟化引擎 openLooKeng
  13. 数据可视化的十大优点
  14. java 运行注释_Java中的可执行注释
  15. Funcode实现黄金矿工
  16. 苯小孩的伤感空间日志发布:一个人,一座城,满心疼
  17. IOS双重认证增加手机号
  18. c语言程序设计 葛日波,C语言程序设计课程教学改革的探索
  19. 新能源汽车比亚迪唐220V放电系统粗解,以及为什么需要支持V2G?
  20. 关于poi操作word,word转换pdf预览,这边文章就够了

热门文章

  1. 序列号及序列号生成器(号段模式,数据库模式)详细介绍(建议收藏)
  2. windows10活动历史记录清除 删除windows时间线操作
  3. Scalable IO in Java(Reactor模式)
  4. 关于老鳖 我想说的话
  5. flask实现下载文件、前后端
  6. git切换分支会同步修改的代码问题解决
  7. 贫瘠之地手游一直显示连接服务器,《炉石传说》贫瘠之地的锤炼进入异常解决攻略 进不去如何解决...
  8. android 通知栏多少钱,Android我还能够相信你多少系列文章三之通知栏
  9. 四月四日服务器维护,【正式服】4月4日例行更新维护公告
  10. 十年磨剑而今匣中长鸣——骑马与砍杀2霸主