python3列表删除大量重复元素remove()方法的问题详解

作者:菠菜猫 时间:2021-02-02 19:26:03 

前言

删除列表中的元素十分简单,有很多方法。使用最多的是remove方法,remove() 方法从集合中删除指定的元素。此方法与discard()方法不同,因为如果指定的项目不存在,remove() 方法将引发错误,而discard()方法不会。但是今天刚发现一个问题,remove在删除列表中重复的元素时,有时会漏掉,只删除了部分重复元素。

下面举一个例子:

删除num1列表中的0元素,思路就是遍历列表,然后删除元素。

期望输出:nums1 = [1, 2, 3]

实际输出:nums1 = [1, 2, 3, 0]

经过搜索后发现,出现以上问题的原因在于,列表的内存自动管理功能,在删除列表中的元素时,python会自动对列表内存进行收缩,并移动列表中的元素以保证元素之间没有间隙,所以使用“循环+remove()方法”来删除列表中某一重复元素时,如果存在相邻的该元素,在删除前面一个元素后,后一个元素会被移动到刚被删除的这个元素的位置,这样这个元素就“躲过了删除”


#删除num1列表中的0
nums1 = [1, 2, 3, 0, 0, 0]
 for j in nums1:
 if j == 0:
  nums1.remove(j)

解决办法:

对于以上问题,解决思路是统计列表中重复的元素,若重复元素的个数大于0,则进行remove。


nums1 = [1, 2, 3, 0, 0, 0]
while nums1.count(0) > 0:
 for j in nums1:
  if j == 0:
  nums1.remove(j)

参考文章:https://www.jb51.net/article/203398.htm

来源:https://www.cnblogs.com/bocaimao/p/13443764.html

标签:python3,remove(),重复
0
投稿

猜你喜欢

  • Python 实现判断图片格式并转换,将转换的图像存到生成的文件夹中

    2023-07-19 04:13:23
  • 提醒各位一下,IE透明会失效的

    2009-03-31 12:48:00
  • 设计原则-控件Balloons(气球状提示)

    2009-08-15 12:34:00
  • Python数据分析之NumPy常用函数使用详解

    2021-09-29 06:17:33
  • 详解python 条件语句和while循环的实例代码

    2023-11-19 11:32:58
  • HTML5实现留言和回复页面样式

    2024-04-18 10:32:20
  • js调用设备摄像头的方法

    2024-04-17 09:46:46
  • TensorFlow绘制loss/accuracy曲线的实例

    2022-01-25 08:01:16
  • python用字典统计单词或汉字词个数示例

    2021-09-02 17:14:10
  • Python使用xlrd和xlwt实现自动化操作Excel

    2021-08-24 10:54:19
  • 改善IE6中a与a:hover的背景支持

    2009-11-27 18:50:00
  • Pycharm生成可执行文件.exe的实现方法

    2023-07-19 12:09:54
  • 不安全的js写法

    2009-09-16 14:26:00
  • Go 处理大数组使用 for range 和 for 循环的区别

    2024-04-28 09:18:59
  • python不使用for计算两组、多个矩形两两间的iou方式

    2021-08-19 19:08:33
  • python根据文章标题内容自动生成摘要的实例

    2021-04-28 10:03:10
  • django与小程序实现登录验证功能的示例代码

    2023-08-04 01:06:58
  • OpenCV半小时掌握基本操作之傅里叶变换

    2022-03-27 22:25:47
  • mysql 列转行,合并字段的方法(必看)

    2024-01-28 03:09:04
  • 利用python实现简单的循环购物车功能示例代码

    2021-05-12 14:52:58
  • asp之家 网络编程 m.aspxhome.com