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入门篇之条件、循环
Oct 17 Python
Python新手在作用域方面经常容易碰到的问题
Apr 03 Python
python 读取摄像头数据并保存的实例
Aug 03 Python
python 数据生成excel导出(xlwt,wlsxwrite)代码实例
Aug 23 Python
python解析yaml文件过程详解
Aug 30 Python
Python爬取新型冠状病毒“谣言”新闻进行数据分析
Feb 16 Python
python 读取二进制 显示图片案例
Apr 24 Python
python3将变量输入的简单实例
Aug 19 Python
Python爬取微信小程序Charles实现过程图解
Sep 29 Python
python3排序的实例方法
Oct 20 Python
python+excel接口自动化获取token并作为请求参数进行传参操作
Nov 10 Python
详解Python+OpenCV绘制灰度直方图
Mar 22 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中for循环语句的几种变型
2006/11/26 PHP
require(),include(),require_once()和include_once()区别
2008/03/27 PHP
php学习笔记 面向对象的构造与析构方法
2011/06/13 PHP
php实现文件下载(支持中文文名)
2013/12/04 PHP
浅析php单例模式
2014/11/25 PHP
php rsa 加密,解密,签名,验签详解
2016/12/06 PHP
php中类和对象:静态属性、静态方法
2017/04/09 PHP
Laravel 自带的Auth验证登录方法
2019/09/30 PHP
Yii框架组件的事件机制原理与用法分析
2020/04/07 PHP
php中数组最简单的使用方法
2020/12/27 PHP
jQuery 表单验证扩展(四)
2010/10/20 Javascript
浅谈javascript实现八大排序
2015/04/27 Javascript
Vue中使用vee-validate表单验证的方法
2018/05/09 Javascript
Angularjs 根据一个select的值去设置另一个select的值方法
2018/08/13 Javascript
在Create React App中使用CSS Modules的方法示例
2019/01/15 Javascript
详解vue2.6插槽更新v-slot用法总结
2019/03/09 Javascript
详解Python的Django框架中的模版继承
2015/07/16 Python
Python中序列的修改、散列与切片详解
2017/08/27 Python
关于Python正则表达式 findall函数问题详解
2018/03/22 Python
浅谈Pandas Series 和 Numpy array中的相同点
2019/06/28 Python
python:按行读入,排序然后输出的方法
2019/07/20 Python
Python flask框架实现浏览器点击自定义跳转页面
2020/06/04 Python
python sleep和wait对比总结
2021/02/03 Python
如何用Python和JS实现的Web SSH工具
2021/02/23 Python
迪士尼西班牙官方网上商店:ShopDisney西班牙
2020/02/02 全球购物
基于Python 函数和方法的区别说明
2021/03/24 Python
客户代表实习人员自我鉴定
2013/09/27 职场文书
大学毕业生通用求职信
2013/09/28 职场文书
桥梁与隧道工程专业本科生求职信
2013/10/08 职场文书
计算机专业大学生的自我评价
2013/11/14 职场文书
2015年公司工作总结
2015/04/25 职场文书
高考诚信考试承诺书
2015/04/29 职场文书
九九重阳节致辞
2015/07/31 职场文书
高中班长竞选稿
2015/11/20 职场文书
详解Laravel框架的依赖注入功能
2021/05/27 PHP
python库sklearn常用操作
2021/08/23 Python