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中的测试模块unittest和doctest的使用教程
Apr 14 Python
python实现图片变亮或者变暗的方法
Jun 01 Python
Python获取linux主机ip的简单实现方法
Apr 18 Python
Python利用splinter实现浏览器自动化操作方法
May 11 Python
Python将json文件写入ES数据库的方法
Apr 10 Python
对Python函数设计规范详解
Jul 19 Python
在PyCharm的 Terminal(终端)切换Python版本的方法
Aug 02 Python
python GUI库图形界面开发之PyQt5布局控件QGridLayout详细使用方法与实例
Mar 06 Python
在Windows上安装和配置 Jupyter Lab 作为桌面级应用程序教程
Apr 22 Python
Python使用jupyter notebook查看ipynb文件过程解析
Jun 02 Python
python如何导出微信公众号文章方法详解
Aug 31 Python
Python字典和列表性能之间的比较
Jun 07 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
星际中的相关伤害
2020/03/04 星际争霸
PHP脚本中include文件出错解决方法
2008/11/20 PHP
PHP的mysqli_query参数MYSQLI_STORE_RESULT和MYSQLI_USE_RESULT的区别
2014/09/29 PHP
Yii使用Captcha验证码的方法
2015/12/28 PHP
Zend Framework过滤器Zend_Filter用法详解
2016/12/09 PHP
滚动条变色 隐藏滚动条与双击网页自动滚屏显示代码
2009/12/28 Javascript
js实现的点击数量加一可操作数据库
2014/05/09 Javascript
jquery实现倒计时代码分享
2014/06/13 Javascript
JS实现网页每隔3秒弹出一次对话框的方法
2015/11/09 Javascript
JavaScript中的prototype原型学习指南
2016/05/09 Javascript
基于JS实现textarea中获取动态剩余字数的方法
2016/05/25 Javascript
JavaScript sort数组排序方法和自我实现排序方法小结
2016/06/06 Javascript
Javascript highcharts 饼图显示数量和百分比实例代码
2016/12/06 Javascript
Angular 4 依赖注入学习教程之FactoryProvider的使用(四)
2017/06/04 Javascript
JS基于for语句编写的九九乘法表示例
2018/01/04 Javascript
详解angular如何调用HTML字符串的方法
2018/06/30 Javascript
个人小程序接入支付解决方案
2019/05/23 Javascript
vue获取验证码倒计时组件
2019/08/26 Javascript
JavaScript计算正方形面积
2019/11/26 Javascript
Vue指令实现OutClick的示例
2020/11/16 Javascript
JavaScript实现消消乐的源代码
2021/01/12 Javascript
Windows下Python3.6安装第三方模块的方法
2018/11/22 Python
Python Django 实现简单注册功能过程详解
2019/07/29 Python
python topk()函数求最大和最小值实例
2020/04/02 Python
opencv+pyQt5实现图片阈值编辑器/寻色块阈值利器
2020/11/13 Python
Python爬虫之Selenium鼠标事件的实现
2020/12/04 Python
使用CSS3美化HTML表单的技巧演示
2016/05/17 HTML / CSS
利用CSS3的3D效果制作正方体
2020/03/10 HTML / CSS
中学生评语大全
2014/04/18 职场文书
安全目标管理责任书
2014/07/25 职场文书
中国梦演讲稿开场白
2014/08/28 职场文书
一份教室追逐打闹的检讨书
2014/09/27 职场文书
财务审计整改报告
2014/11/06 职场文书
五年级语文教学反思
2016/03/03 职场文书
职场新人刚入职工作总结该怎么写?
2019/05/15 职场文书
php7中停止php-fpm服务的方法详解
2021/05/09 PHP