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运行的17个时新手常见错误小结
Aug 07 Python
Python切片用法实例教程
Sep 08 Python
Python中的类学习笔记
Sep 23 Python
在Python的Django框架中获取单个对象数据的简单方法
Jul 17 Python
pyhanlp安装介绍和简单应用
Feb 22 Python
Django文件存储 默认存储系统解析
Aug 02 Python
python_array[0][0]与array[0,0]的区别详解
Feb 18 Python
pyMySQL SQL语句传参问题,单个参数或多个参数说明
Jun 06 Python
python对批量WAV音频进行等长分割的方法实现
Sep 25 Python
Python SQLAlchemy库的使用方法
Oct 13 Python
Django+Django-Celery+Celery的整合实战
Jan 20 Python
Python使用Opencv打开笔记本电脑摄像头报错解问题及解决
Jun 21 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
实现在同一方法中获取当前方法中新赋值的session值解决方法
2014/06/26 PHP
PHP实现根据设备类型自动跳转相应页面的方法
2014/07/24 PHP
jquery 上下滚动广告
2009/06/17 Javascript
javascript 事件绑定问题
2011/01/01 Javascript
javascript里模拟sleep(两种实现方式)
2013/01/25 Javascript
页面刷新时记住滚动条的位置jquery代码
2014/06/17 Javascript
JS动态修改iframe内嵌网页地址的方法
2015/04/01 Javascript
JavaScript动态插入CSS的方法
2015/12/10 Javascript
理解javascript异步编程
2016/01/27 Javascript
适用于javascript开发者的Processing.js入门教程
2016/02/24 Javascript
AngularJS实现根据变量改变动态加载模板的方法
2016/11/04 Javascript
js获取文件里面的所有文件名(实例)
2017/10/17 Javascript
基于JSONP原理解析(推荐)
2017/12/04 Javascript
webpack中使用iconfont字体图标的方法
2018/02/22 Javascript
微信小程序项目实践之九宫格实现及item跳转功能
2018/07/19 Javascript
webpack打包非模块化js的方法
2018/10/24 Javascript
vue组件中watch props根据v-if动态判断并挂载DOM的问题
2019/05/12 Javascript
在项目vue中使用echarts的操作步骤
2020/09/07 Javascript
Node.js中的异步生成器与异步迭代详解
2021/01/31 Javascript
[00:14]PWL:老朋友Mushi拍VLOG与中国玩家问好
2020/11/04 DOTA
python使用logging模块发送邮件代码示例
2018/01/18 Python
解决tensorflow1.x版本加载saver.restore目录报错的问题
2018/07/26 Python
python for循环输入一个矩阵的实例
2018/11/14 Python
使用PyQtGraph绘制精美的股票行情K线图的示例代码
2019/03/14 Python
Pytorch 的损失函数Loss function使用详解
2020/01/02 Python
Python气泡提示与标签的实现
2020/04/01 Python
css3给背景图片加颜色遮罩的方法
2019/11/05 HTML / CSS
路易威登和香奈儿手袋:LuxeDH
2017/01/12 全球购物
个人找工作求职简历的自我评价
2013/10/20 职场文书
关于赌博的检讨书
2014/01/24 职场文书
销售顾问岗位职责
2014/02/25 职场文书
房屋买卖委托公证书
2014/04/08 职场文书
财产公证书格式
2014/04/10 职场文书
关于读书的演讲稿500字
2014/08/27 职场文书
毕业生自我鉴定范文
2019/05/13 职场文书
2019预备党员转正申请书模板2篇!
2019/08/07 职场文书