Python一次性删除list中的一个或多个相同元素

  • 一次性删除list中某个单一元素
  • 一次性删除list中多个相同元素
    • 利用列表表达式快速实现一次性删除多个指定元素

一次性删除list中某个单一元素

Python删除list中某个单一元素有三种常用方法:

  1. list.pop(index)删除列表list中 位置索引为index处的值并且返回这个值

备注:
(1)list.pop(index) 接收的是索引index;
(2)list.pop()在无参的情况下删除的是最后一个元素(典型的栈的特性);
(3)list.pop(index)存在返回值,返回的是删除的元素值。
(4)list 的 append()(添加到尾部),pop()(从尾部弹出),成功地将 list 变成了 stack

  1. list.remove(value)删除列表list中 第一个等于value的值,无返回值

备注:list.remove(value)的参数是具体的元素值,而不是索引;

  1. del(list[index])或者del list[index]删除列表list中 位置索引为index处的值,无返回值;del中的index也可以是切片,即:del listname[start : end],删除中间一段连续的元素
  2. list.clear()删除列表list中所有元素,也即清空列表
# 示例1
label_list = ['id15', 'id26', 'id15', 'id13', 'id19']
label_list.remove('id15') # 通过remove删除list中第一个等于“id5”的元素——每次仅能删除一个元素
print(label_list)
>>>
['id26', 'id15', 'id13', 'id19']# 示例2
label_list = ['id15', 'id26', 'id15', 'id13', 'id19']
label_list.pop(0) # 通过pop删除list中index为0处的元素——每次仅能删除一个元素
print(label_list)
>>>
['id26', 'id15', 'id13', 'id19']# 示例3
label_list = ['id15', 'id26', 'id15', 'id13', 'id19']
del (label_list[0:2]) # 通过del,利用index索引切片删除list中0、1两个元素
print(label_list)
>>>
['id15', 'id13', 'id19']

一次性删除list中多个相同元素

方法一: 通过list.pop(i)方法 + for循环实现将index=i处的元素删除并return该元素。

典型范例:

list_a = ['d', 'd', 7, 4, 'd', 'd', 2, 1]for i in range(len(alist)-1,-1,-1): # 倒序循环,从最后一个元素循环到第一个元素。不能用正序循环,因为正序循环删除元素后,后续的列表的长度和元素下标同时也跟着变了,由于len(alist)是动态的。if alist[i] == 'd':alist.pop(i) # 将index=i处的元素删除并return该元素。如果不想保存这个被删除的值只要不把alist.pop(i)赋值给变量就好,不影响程序运行。print(alist)
>>>
[7, 4, 2, 1]# 示例4
url = list("http://c.biancheng.net/python/")
print(url)
>>>
['h', 't', 't', 'p', ':', '/', '/', 'c', '.', 'b', 'i', 'a', 'n', 'c', 'h', 'e', 'n', 'g', '.', 'n', 'e', 't', '/', 'p', 'y', 't', 'h', 'o', 'n', '/']
url.clear()  # 使用clear删除列表list中所有元素
print(url)
>>>
[]

方法二: 通过list.remove(‘xx’)方法 + for循环实现将list中元素值“xx”删除,删除过程不会返回被删除的值。

由于remove在for循环中动态改变了list长度和每一个元素的位置,因此不能用正序循环,否则报错index溢出;正确的做法是使用 倒序循环——依次删除首次出现的指定元素。

alist = ['d', 'd', 7, 4, 'd', 'd', 2, 1]
for i in range(len(alist)-1,-1,-1): # 同样不能用正序循环,for i in range(0,len(alist)), 用了remove()之后,len(alist)是动态的,会产生列表下标越界错误if alist[i] == 'd':alist.remove('d') # 从左往右删除首次出现的值为‘d'的元素print(alist)
>>>
[7, 4, 2, 1]

利用列表表达式快速实现一次性删除多个指定元素

alist = ['d', 'd', 7, 4, 'd', 'd', 2, 1]
list(set(alist).difference(set([alist[i] for i in range(len(alist)-1,-1,-1) if alist[i] == 'd'])))
>>>
[7, 4, 2, 1]

参考链接:
python删除list中多个相同的元素
Python list列表删除元素(4种方法)

Python一次性删除list中的一个或多个相同元素相关推荐

  1. python处理列表中字典_Python列表嵌套字典的时候,如果要删除列表中其中一个字典要如何操作...

    如果要删除列表中其中一个字典要操作如下 第一种方法 1.1 name_list=[{"name":"张三","age":18},{" ...

  2. C#一次性删除委托中的所有方法

    因为有的时候需要一次性删除委托中的所有方法 , 有时候不知道委托中挂载了哪些方法 , 即可通过委托的方法 GetInvocationList 得到此委托中所挂载的所有的方法一次行删除.来一个例子: u ...

  3. 删除list中的一个节点

    1.删除list中的一个节点,给定位置为i typedef struct _list_t { struct _list_t *next; int data; }list; void delete_no ...

  4. 怎么一次性删除PPT中所有动画效果?

    怎么一次性删除PPT中所有动画效果? 通过PPT软件中的VBA来解决了,几乎搜遍了所有的网站,最后终于找到了答案,将代码给各位分享. 代码如下: Sub removeALL() Dim I As In ...

  5. mysql 去除逗号,MySQL查询删除字符串中最后一个逗号后的所有字符?

    要删除字符串中最后一个逗号之后的所有字符,可以使用SUBSTRING_INDEX(). 如果您不知道最后一个逗号的位置,则需要使用来动态查找最后一个逗号LENGTH(). 语法如下-UPDATE yo ...

  6. 删除表中的一个列名字段表出现如下情况

    删除一列的时候出现了: 删除表中的一个列名字段表出现如下情况: [IBM][CLI Driver][DB2/NT] SQL0443N  例程 "SYSPROC.ALTOBJ"(特定 ...

  7. python 如何删除excel中带有删除线的特定字符串保留没有删除线的单词

    python 如何删除excel中带有删除线的特定字符串保留没有删除线的单词 注意:经验证 Mac必须安装Microsoft Excel app 但不一定OK import xlwings as xw ...

  8. jquery如何删除数组中的一个元素?

    jquery删除数组中的一个元素的方法是用 splice 实现的. 举例说明: var arrList = ['a','b','c','d']; arrList.splice(jQuery.inArr ...

  9. 对《Python核心编程》中“第一个Python程序”的改进

    概述: 本程序主要是模仿<Python核心编程>中3.6节--第一个Python程序,并在其基础上做了一些小的改进,而改进的要求则是来源于第三章的课后练习题. 本篇博客的一个核心问题就是在 ...

  10. python批量删除文件名中的下划线-代码详解

    删除文件名中的下划线 代码示例: 代码详解 对于文件名中出现的"_",如(500_600),将下划线消除,替换为(500600) 代码示例: import osdef rename ...

最新文章

  1. 第十九章——使用资源调控器管理资源(2)——使用T-SQL配置资源调控器
  2. 招硕博80人 (紧缺)!博士补贴33万,硕士房补22万,事业编,安置配偶+子女入学,坐标湖北...
  3. 【java排序】 归并排序算法、堆排序算法
  4. docker 限制容器日志大小
  5. mysql 主从复制讲解_MySQL主从复制详解
  6. 儿童手表怎么删除联系人_双11儿童手表选购指南:全天候24小时定位,做孩子的贴身保镖...
  7. 【前端工程师手册】JavaScript作用域拾遗
  8. java接收并存储文件_客户端读取本地文件的数据,发送到服务器,服务器接收并存储到文件中...
  9. mouseChildren= false
  10. 随想录(一个android原生app的代码赏析)
  11. 快讯:阿里巴巴加入JCP执行委员会
  12. 布局之WrapPanel与StackPanel
  13. QT Icon设置异常
  14. 软件测试基础知识 - 集成测试和系统测试的区别,以及它们的应用场景
  15. mongodb实现一主两从一个仲裁者
  16. Python wxpython篇 | Python生态库之图形用户界面开发库 “wxPython “ 的安装及使用(附. 使用pyinstaller 库打包Python随机点名小程序程序.exe文件)
  17. java查找文件路径_如何查找java路径?
  18. python怎么爬虎牙_Python爬虫:爬取虎牙星秀主播图片
  19. php登陆网页版微信代码,几行php代码实现微信自动注册登陆 (微信PC扫码受权登陆注册)...
  20. zemax场曲畸变图_zemax初学入门像差分析各种图像(上)

热门文章

  1. 疾病检测与贝叶斯应用
  2. 苹果手机页面的输入完软键盘收起来后页面不回弹的解决方法
  3. 送给北京地铁边上加班的程序员们(自驾也别疲劳驾驶哦)
  4. 微信之微擎开发列表常见问题
  5. 异步时钟亚稳态 的解决方案——多bit信号
  6. 大唐安途(福建)信息技术有限公司蓝牙AOA高精度室内定位解决方案分享欢迎莅临福州北斗小镇展厅参观指导
  7. 未来的Web:九个不可思议的WebGL应用试验
  8. ACER(宏碁)不用花一分钱,轻松学会自己安装电脑系统(含工具教程)
  9. 买二手楼要擦亮双眼——程序猿买二手房必看案例
  10. Excel正课阶段Day2