2024-04-26 02:15:52 发布
网友
是否可以同时从列表中删除多个元素?如果我想删除索引0和2处的元素,然后尝试del somelist[0],然后是del somelist[2],那么第二条语句实际上将删除somelist[3]。
del somelist[0]
del somelist[2]
somelist[3]
我想我可以先删除编号较高的元素,但我希望有更好的方法。
不知为什么我不喜欢这里的任何答案。 是的,它们可以工作,但严格地说,它们中的大多数并没有删除列表中的元素,是吗?(但要做一份拷贝,然后用编辑过的拷贝替换原来的拷贝)。
为什么不先删除较高的索引呢?
这是有原因的吗? 我只想:
for i in sorted(indices, reverse=True): del somelist[i]
如果您真的不想向后删除项,那么我想您应该取消增加大于上次删除的索引的索引值(由于您有不同的列表,因此不能真正使用相同的索引)或使用列表的副本(这不是“删除”,而是用已编辑的副本替换原始索引)。
我是不是遗漏了什么,有什么理由不按相反的顺序删除吗?
可能不是解决这个问题的最佳方法:
indices = 0, 2 somelist = [i for j, i in enumerate(somelist) if j not in indices]
如果您要删除多个非相邻项,那么您描述的是最好的方法(是的,请确保从最高索引开始)。
如果项目相邻,则可以使用切片分配语法:
a[2:10] = []
不知为什么我不喜欢这里的任何答案。 是的,它们可以工作,但严格地说,它们中的大多数并没有删除列表中的元素,是吗?(但要做一份拷贝,然后用编辑过的拷贝替换原来的拷贝)。
为什么不先删除较高的索引呢?
这是有原因的吗? 我只想:
如果您真的不想向后删除项,那么我想您应该取消增加大于上次删除的索引的索引值(由于您有不同的列表,因此不能真正使用相同的索引)或使用列表的副本(这不是“删除”,而是用已编辑的副本替换原始索引)。
我是不是遗漏了什么,有什么理由不按相反的顺序删除吗?
可能不是解决这个问题的最佳方法:
如果您要删除多个非相邻项,那么您描述的是最好的方法(是的,请确保从最高索引开始)。
如果项目相邻,则可以使用切片分配语法:
相关问题 更多 >
编程相关推荐