在Python中删除范围内的元素

通过使用元素的索引和del函数,可以直接从python删除单个元素。但是在某些情况下,我们需要删除一组索引的元素。本文探讨了仅删除索引列表中指定的列表中那些元素的方法。

使用排序和删除

在这种方法中,我们创建一个包含必须删除的索引值的列表。我们对它们进行排序和反转以保留列表元素的原始顺序。最后,我们将del函数应用于这些特定索引点的原始给定列表。

示例

Alist = [11,6, 8, 3, 2]

# The indices list
idx_list = [1, 3, 0]

#打印原始列表
print("Given list is : ", Alist)

#打印索引列表
print("The indices list is : ", idx_list)

# Use del and sorted()for i in sorted(idx_list, reverse=True):
del Alist[i]

# Print result
print("List after deleted elements : " ,Alist)

输出结果

运行上面的代码给我们以下结果-

Given list is : [11, 6, 8, 3, 2]
The indices list is : [1, 3, 0]
List after deleted elements : [8, 2]

排序和反向后的idx_list变为[0,1,3]。因此,只有这些位置的元素被删除。

使用枚举而不是

我们还可以通过在for循环中使用枚举和not in子句来实现上述程序。结果与上面相同。

示例

Alist = [11,6, 8, 3, 2]

# The indices list
idx_list = [1, 3, 0]

# printing the original list
print("Given list is : ", Alist)

# printing the indices list
print("The indices list is : ", idx_list)

# Use slicing and not in
Alist[:] = [ j for i, j in enumerate(Alist)
if i not in idx_list ]

# Print result
print("List after deleted elements : " ,Alist)

输出结果

运行上面的代码给我们以下结果-

Given list is : [11, 6, 8, 3, 2]
The indices list is : [1, 3, 0]
List after deleted elements : [8, 2]