concurrentbag 删除指定元素_Python实现列表索引批量删除的5种方法_python
这篇文章主要介绍了Python实现列表索引批量删除的5种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
最近用Java做项目,使用到List broadcastInfos的 ()方法,出现项目的重大失误,因为第一次使用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]:(listElement)
返回结果
这种结果,既不会报错,返回值也与目标极为相似,返回2个值list对象,len(listObj)-2 = 2,也是[3,… 开头,如果不仔细看好像没什么问题。但是结果却是错误的。
将 ()
改为(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 # 方法二
[ (cElement) for cElement in [a[i] for i in b]]
print(a) # 强制使用 () 方法方式# 方法三
a = {a[i] if i not in b else None for i in range(len(a))}
(None) # 将要删除的对象设置为默认值,# 前提是返回结果无序要求以及 纯一种类型
print(a)# 方法四
m = {i:element for i, element in enumerate(a)}
[(i) for i in b]
print(list(())) # 将每一个元素对象编码,然后按指定的索引删除,# 并返回 values() 集合对象 --> list对象# 方法五
class ListSub:def __init__(self, list1=None):if list1 is None:= []elif len(list1):= [x for x in list1]def __sub__(self, rhs):[(cElement) for cElement in [[i] for i in rhs.listA]]return a = ListSub(a)
b = ListSub(b)print(a-b) # 自己写个类,既然Python 不支持 “-” 这个符号,# 而喜欢存储索引的同学,自己写个工具类,实现减法,# 返回自己想要的结果对象。
当然,以上的方式都只是纯粹将方法的实现,没有进行算法优化,以及相应的异常捕获和处理,而Python的效率是有名的…, 所有大牛们请不要过多介怀。
方法其实还有很多,但就项目中出现的Java语法这种错误, 我就用Python 来反省一下自己,希望能帮到大家,谢谢。
最后,在学习其他语言的同时,才知道,Python有他语言的便捷之处,也有其他语言共有的缺憾,没有语言基础的使用者,坑尤其多(比如List类的使用),所以,还要广学习,多对比,写出集多种语言精华的代码,然更多初学者将精力放在业务处理和程序的实现上。
到此这篇关于Python实现列表索引批量删除的5种方法的文章就介绍到这了,更多相关Python 列表索引批量内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
concurrentbag 删除指定元素_Python实现列表索引批量删除的5种方法_python相关推荐
- dwg批量删除自定义范围内指定地物的工具,CAD快速批量删除指定地物,基于FME实现批量删除CAD数据的指定地物
今天带来一个基于FME实现对dwg数据批量删除自定义范围内指定地物的工具案例.主要解决对dwg数据局部批量删除某些地物的问题,例如删除地形图某个范围内的所有的砖房屋.路灯等,而指定范围外的砖房屋.路灯 ...
- Redis中列表list数据类型(增加(在左侧、右侧或指定元素前后插入数据)、获取(获取表内指定范围的元素)、更新(获取指定索引位置的元素值)、删除(删除指定元素、count))
列表的元素类型为string 按照插⼊顺序排序 1. 增加 1.1 在左侧插⼊数据 lpush key value1 value2 ... 例1:从键为a1的列表左侧加⼊数据a . b .c lpus ...
- Python列表(获取列表中指定元素的索引、获取列表中的多个元素、判断指定元素是否在列表中存在、列表元素的遍历、列表元素的增加操作、 列表元素的删除操作、列表元素的修改操作、列表元素的排序操作)
1.获取列表中指定元素的索引 eg1:未指定索引范围查找索引 zyr=['憨憨','憨宝'] print(zyr.index('憨宝')) print(zyr[1]) eg2:在指定索引范围内查找元素 ...
- Redis中有序集合zset数据类型(增加(添加元素)、获取(获取指定范围元素、返回权值在min和max之间的成员、返回成员member的score值)、删除(删除指定元素和指定权值范围的元素))
sorted set,有序集合 元素为string类型 元素具有唯⼀性,不重复 [值不能重复] 每个元素都会关联⼀个double类型的score,表示权重,通过权重将元素从⼩到⼤排序 说明:没有修 ...
- js list删除指定元素_删除js数组中的指定元素,有这两步就够了
js数组是js部分非常重要的知识,有时我们有这么个需求js数组删除指定元素,先定义一个函数来获取删除指定元素索引值,然后用js数组删除的方法,来删除指定元素即可,就两步不难,很简单. 1.JS的数组对 ...
- js数组怎么删除指定元素?
js数组是js部分非常重要的知识,有时我们有这么个需求js数组删除指定元素,先定义一个函数来获取删除指定元素索引值,然后用js数组删除的方法,来删除指定元素即可,就两步不难,很简单. 1.JS的数组对 ...
- 从List集合中删除指定元素
从List集合中删除指定元素的几种方式 最近在使用这个操作的时候搜索了一下网上的文章,发现有些能用有些不能用, 由于使用之前没有做详细的测试,导致程序bug,今天抽空做了一下总结和测试. packag ...
- JavaScript数组怎么删除指定元素?
js数组是js部分非常重要的知识,有时我们有这么个需求js数组删除指定元素,先定义一个函数来获取删除指定元素索引值,然后用js数组删除的方法,来删除指定元素即可,就两步不难,很简单. 目录 1.JS的 ...
- JS遍历从数组中删除指定元素
JS遍历从数组中删除指定元素,arr为目标数组,aim为目标对比项 当每次遍历全部内容需要删除的元素不超过一个时,以下两种方法都可用,虽然结果是正确的,但是还是不推荐使用,因为没有包含数组改变后角标值 ...
最新文章
- Vue轮播图插件---Vue-Awesome-Swiper
- IE6、IE7、IE8、Firefox兼容性CSS
- Java final关键字,常量的定义
- [TCP/IP] SSL的通讯原理
- OpenCV imread()函数
- 经典算法研究系列:十、从头到尾彻底理解傅里叶变换算法、上
- 探测距离机器人模型:通过超声波测距控制舵机转向,LED灯,语音播放,蜂鸣器(米思齐mixly,arduino)
- Python cheat sheet 大全
- SELECTION-SCREEN 加按钮
- [SQL SERVER] 跨库查询--分布式查询
- 记录下qcharts绘制曲线遇到的坑
- c 转时间戳php,php日期转时间戳,指定日期转换成时间戳 筋斗云网络
- MAML-CNN代码笔记
- 启用了被称为 HTTP 严格传输安全(HSTS)的安全策略,Firefox 只能与其建立安全连接
- 概率论复习总结——基本概念
- mysql 时区时间_MySql的时区(serverTimezone)引发的血案
- python变量的声明和赋值
- 新技術讓大數據“看得見”
- 质因数分解(java)
- mysql 无法启动 0xc000007b_「应用程序无法正常启动0xc000007b」正确解决 应用程序无法正常启动(0xc000007b)的问题 - seo实验室...
热门文章
- python计算近似圆周率
- 开关怎么使用_智能数显压力开关怎么使用?
- c++ byte*长度_9.19秋冬原C日标95白鹅绒超保暖柔软大被子羽绒服 从头到脚的温暖...
- YACC、LEX、JAVACC-------常用的编译工具
- input中radio对象的使用、获取方法
- Intellij idea控制台中文乱码问题
- 敏捷开发用户故事系列之四:优先级排序
- 火星人敏捷开发手册2012-04-30新增敏捷日常跟进内容
- 【Linux 驱动】第十章 中断处理
- 2019/5/10开始咯