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 打印对象的所有属性值的方法
Sep 11 Python
利用Python命令行传递实例化对象的方法
Nov 02 Python
Python 含参构造函数实例详解
May 25 Python
Python实现Dijkstra算法
Oct 17 Python
python给微信好友定时推送消息的示例
Feb 20 Python
python实现维吉尼亚算法
Mar 20 Python
通过cmd进入python的实例操作
Jun 26 Python
正则给header的冒号两边参数添加单引号(Python请求用)
Aug 09 Python
python基于TCP实现的文件下载器功能案例
Dec 10 Python
Python使用pyyaml模块处理yaml数据
Apr 14 Python
keras多显卡训练方式
Jun 10 Python
实例讲解Python中sys.argv[]的用法
Jun 03 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
《心理测量者3》剧场版动画预告
2020/03/02 日漫
一个图形显示IP的PHP程序代码
2007/10/19 PHP
PHP file_get_contents 函数超时的几种解决方法
2009/07/30 PHP
php密码生成类实例
2014/09/24 PHP
PHP实现批量删除(封装)
2017/04/28 PHP
js 跨域和ajax 跨域问题小结
2009/07/01 Javascript
Query中click(),bind(),live(),delegate()的区别
2013/11/19 Javascript
扩展JS Date对象时间格式化功能的小例子
2013/12/02 Javascript
javascript事件函数中获得事件源的两种不错方法
2014/03/17 Javascript
jquery中 $.expr使用实例介绍
2014/06/09 Javascript
Jquery自定义button按钮的几种方法
2014/06/11 Javascript
JS实现清除指定cookies的方法
2014/09/20 Javascript
node.js中的http.request.end方法使用说明
2014/12/10 Javascript
javascript相关事件的几个概念
2015/05/21 Javascript
js获取滚动距离的方法
2015/05/30 Javascript
使用AngularJS编写较为优美的JavaScript代码指南
2015/06/19 Javascript
jquery 中ajax执行的优先级
2015/06/22 Javascript
jQuery插件开发汇总
2016/05/15 Javascript
js弹出窗口返回值的简单实例
2016/05/28 Javascript
在nginx上部署vue项目(history模式)的方法
2017/12/28 Javascript
vuex存值与取值的实例
2019/11/06 Javascript
用python代码做configure文件
2014/07/20 Python
Python中函数的参数定义和可变参数用法实例分析
2015/06/04 Python
python函数装饰器用法实例详解
2015/06/04 Python
Python3实现发送邮件和发送短信验证码功能
2020/01/07 Python
tensorboard实现同时显示训练曲线和测试曲线
2020/01/21 Python
Python多重继承之菱形继承的实例详解
2020/02/12 Python
python字符串常用方法及文件简单读写的操作方法
2020/03/04 Python
Opodo英国旅游网站:预订廉价航班、酒店和汽车租赁
2018/07/14 全球购物
口腔医学技术应届生求职信
2013/11/09 职场文书
简历中自我评价范文3则
2013/12/14 职场文书
土木工程专业个人求职信
2013/12/30 职场文书
2014年机关作风建设工作总结
2014/10/23 职场文书
公务员党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
体育教师个人总结
2015/02/09 职场文书
2015年父亲节寄语
2015/03/23 职场文书