Python实现列表索引批量删除的5种方法


Posted in Python onNovember 16, 2020

最近用Java做项目,使用到List broadcastInfos的 broadcastInfos.remove()方法,出现项目的重大失误,因为第一次使用Java语言,过于相信remove()方法,所以,不加思索的就使用了来删除list对象中的指定元素。

背景:
目标对象 listObj:[3, 4, 5, 6]
删除指定索引列表 indexList: [1, 2]
返回结果: [3, 6]
常见错误:

for listElement in listObj:
	for index in indexList:
		if listElement == listObj[index]:
			listObj.remove(listElement)

返回结果

Python实现列表索引批量删除的5种方法

这种结果,既不会报错,返回值也与目标极为相似,返回2个值list对象,len(listObj)-2 = 2,也是[3,… 开头,如果不仔细看好像没什么问题。但是结果却是错误的。

listObj.remove() 改为listObj.pop(index)结果也是相同的。

Python实现列表索引批量删除的5种方法

Java用同样的编程思想,得到的结果也有相似性。
这种错误,主要是初学者对于数据存储原理没有理解清楚,或者,没有意识到内存存储长度的动态变化导致的, 下面介绍几种Python删除指定列表索引的方法

a = [3, 4, 5, 6]
b = [1,2]  # b 中为 a的索引

# 删除a中下标为b中的元素
# ====> [3, 6]

# 方法一
a = [a[i] for i in range(len(a)) if (i not in b)]
print(a)  # 重新生成满足条件的list并赋值给 a 


# 方法二
[ a.remove(cElement) for cElement in [a[i] for i in b]]
print(a) # 强制使用 a.remove() 方法方式


# 方法三
a = {a[i] if i not in b else None for i in range(len(a))}
a.remove(None) # 将要删除的对象设置为默认值,
				#  前提是返回结果无序要求以及 纯一种类型
print(a)


# 方法四
m = {i:element for i, element in enumerate(a)}
[m.pop(i) for i in b]
print(list(m.values())) # 将每一个元素对象编码,然后按指定的索引删除,
						 # 并返回 values() 集合对象 --> list对象


# 方法五
class ListSub:

  def __init__(self, list1=None):
    if list1 is None:
      self.listA = []
    elif len(list1):
      self.listA = [x for x in list1]


  def __sub__(self, rhs):
    [self.listA.remove(cElement) for cElement in [self.listA[i] for i in rhs.listA]]
    return self.listA


a = ListSub(a)
b = ListSub(b)

print(a-b)  # 自己写个类,既然Python 不支持 “-” 这个符号,
			 # 而喜欢存储索引的同学,自己写个工具类,实现减法,
			 # 返回自己想要的结果对象。

当然,以上的方式都只是纯粹将方法的实现,没有进行算法优化,以及相应的异常捕获和处理,而Python的效率是有名的…, 所有大牛们请不要过多介怀。

方法其实还有很多,但就项目中出现的Java语法这种错误, 我就用Python 来反省一下自己,希望能帮到大家,谢谢。

最后,在学习其他语言的同时,才知道,Python有他语言的便捷之处,也有其他语言共有的缺憾,没有语言基础的使用者,坑尤其多(比如List类的使用),所以,还要广学习,多对比,写出集多种语言精华的代码,然更多初学者将精力放在业务处理和程序的实现上。

到此这篇关于Python实现列表索引批量删除的5种方法的文章就介绍到这了,更多相关Python 列表索引批量内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
跟老齐学Python之复习if语句
Oct 02 Python
python实现在目录中查找指定文件的方法
Nov 11 Python
python获取外网ip地址的方法总结
Jul 02 Python
Python开发之快速搭建自动回复微信公众号功能
Apr 22 Python
Python编写电话薄实现增删改查功能
May 07 Python
python实现word 2007文档转换为pdf文件
Mar 15 Python
在PyCharm环境中使用Jupyter Notebook的两种方法总结
May 24 Python
一行代码让 Python 的运行速度提高100倍
Oct 08 Python
Python中常用的8种字符串操作方法
May 06 Python
分享PyCharm的几个使用技巧
Nov 10 Python
基于OpenCV的路面质量检测的实现
Nov 04 Python
golang中的空接口使用详解
Mar 30 Python
Python 列表反转显示的四种方法
Nov 16 #Python
python 爬虫如何实现百度翻译
Nov 16 #Python
Python list和str互转的实现示例
Nov 16 #Python
python list的index()和find()的实现
Nov 16 #Python
Python识别处理照片中的条形码
Nov 16 #Python
Python将list元素转存为CSV文件的实现
Nov 16 #Python
python list等分并从等分的子集中随机选取一个数
Nov 16 #Python
You might like
php 智能404跳转代码,适合换域名没改变目录的网站
2010/06/04 PHP
php中访问修饰符的知识点总结
2019/01/27 PHP
javascript或asp实现的判断身份证号码是否正确两种验证方法
2009/11/26 Javascript
javascript 的Document属性和方法集合
2010/01/25 Javascript
图片onload事件触发问题解决方法
2011/07/31 Javascript
javascript全局变量封装模块实现代码
2012/11/28 Javascript
自动设置iframe大小的jQuery代码
2013/09/11 Javascript
js获取通过ajax返回的map型的JSONArray的方法
2014/01/09 Javascript
javascript中setTimeout和setInterval的unref()和ref()用法示例
2014/11/26 Javascript
JQuery实现的购物车功能(可以减少或者添加商品并自动计算价格)
2015/01/13 Javascript
JQuery判断radio(单选框)是否选中和获取选中值方法总结
2015/04/15 Javascript
input框中的name和id的区别
2016/11/16 Javascript
Angularjs使用指令做表单校验的方法
2017/03/31 Javascript
vue.js之vue-cli脚手架的搭建详解
2017/05/05 Javascript
Vue2.0 vue-source jsonp 跨域请求
2017/08/04 Javascript
node.js中fs文件系统目录操作与文件信息操作
2018/02/24 Javascript
MVVM框架下实现分页功能示例
2018/06/14 Javascript
Vue 数组和对象更新,但是页面没有刷新的解决方式
2019/11/09 Javascript
[01:10:02]IG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
py中的目录与文件判别代码
2008/07/16 Python
python网络编程学习笔记(一)
2014/06/09 Python
用Python实现命令行闹钟脚本实例
2016/09/05 Python
Django中的文件的上传的几种方式
2018/07/23 Python
Python实现购物评论文本情感分析操作【基于中文文本挖掘库snownlp】
2018/08/07 Python
使用EduBlock轻松学习Python编程
2018/10/08 Python
Python ORM框架Peewee用法详解
2020/04/29 Python
使用pandas实现筛选出指定列值所对应的行
2020/12/13 Python
html5 Canvas画图教程(8)—canvas里画曲线之bezierCurveTo方法
2013/01/09 HTML / CSS
存储过程和函数的区别
2013/05/28 面试题
学前教育专业毕业生自荐信
2013/10/03 职场文书
专科文秘应届生求职信
2013/11/18 职场文书
自考生自我评价分享
2014/01/18 职场文书
幼儿园教师考核制度
2014/02/01 职场文书
财务检查整改报告
2014/11/06 职场文书
煤矿安全生产管理协议书
2016/03/22 职场文书
网络安全倡议书(3篇)
2019/09/18 职场文书