Python实现列表索引批量删除的5种方法
#代码知识 发布时间: 2026-01-12
最近用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)
返回结果
这种结果,既不会报错,返回值也与目标极为相似,返回2个值list对象,len(listObj)-2 = 2,也是[3,… 开头,如果不仔细看好像没什么问题。但是结果却是错误的。
将 listObj.remove() 改为listObj.pop(index)结果也是相同的。
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类的使用),所以,还要广学习,多对比,写出集多种语言精华的代码,然更多初学者将精力放在业务处理和程序的实现上。
代码知识SEO上一篇 : PHP实现倒计时功能
下一篇 : MySQL 分组查询和聚合函数
-
SEO外包最佳选择国内专业的白帽SEO机构,熟知搜索算法,各行业企业站优化策略!
SEO公司
-
可定制SEO优化套餐基于整站优化与品牌搜索展现,定制个性化营销推广方案!
SEO套餐
-
SEO入门教程多年积累SEO实战案例,从新手到专家,从入门到精通,海量的SEO学习资料!
SEO教程
-
SEO项目资源高质量SEO项目资源,稀缺性外链,优质文案代写,老域名提权,云主机相关配置折扣!
SEO资源
-
SEO快速建站快速搭建符合搜索引擎友好的企业网站,协助备案,域名选择,服务器配置等相关服务!
SEO建站
-
快速搜索引擎优化建议没有任何SEO机构,可以承诺搜索引擎排名的具体位置,如果有,那么请您多注意!专业的SEO机构,一般情况下只能确保目标关键词进入到首页或者前几页,如果您有相关问题,欢迎咨询!