📜  Python|删除范围内的元素

📅  最后修改于: 2022-05-13 01:55:13.200000             🧑  作者: Mango

Python|删除范围内的元素

单个元素的删除相对容易,但是当我们希望删除范围内的元素时,由于在Python中自动重新排列和移动列表元素,这项任务变得很繁琐。让我们讨论可以在范围内删除元素的某些方法。

方法 #1:使用 del + sorted()
在这种方法中,我们反转我们希望删除的索引列表,并在原始列表中以向后的方式删除它们,以便列表的重新排列不会破坏解决方案的完整性。

# Python3 code to demonstrate
# range deletion of elements 
# using del + sorted()
  
# initializing list 
test_list = [3, 5, 6, 7, 2, 10]
  
# initializing indices
indices_list = [1, 4, 2]
  
# printing the original list
print ("The original list is : " + str(test_list))
  
# printing the indices list
print ("The indices list is : " + str(indices_list))
  
# using del + sorted()
# range deletion of elements
for i in sorted(indices_list, reverse = True):
    del test_list[i]
  
# printing result
print ("The modified deleted list is : " + str(test_list))
输出:
The original list is : [3, 5, 6, 7, 2, 10]
The indices list is : [1, 4, 2]
The modified deleted list is : [3, 7, 10]


方法 #2:使用enumerate() + 列表推导
如果我们创建一个不包含删除列表中的元素的列表,也可以执行此任务,即,我们可以在没有它们的情况下重新创建它,而不是实际删除元素。

# Python3 code to demonstrate
# range deletion of elements 
# using enumerate() + list comprehension
  
# initializing list 
test_list = [3, 5, 6, 7, 2, 10]
  
# initializing indices
indices_list = [1, 4, 2]
  
# printing the original list
print ("The original list is : " + str(test_list))
  
# printing the indices list
print ("The indices list is : " + str(indices_list))
  
# using enumerate() + list comprehension
# range deletion of elements
test_list[:] = [ j for i, j in enumerate(test_list)
                         if i not in indices_list ]
  
# printing result
print ("The modified deleted list is : " + str(test_list))
输出:
The original list is : [3, 5, 6, 7, 2, 10]
The indices list is : [1, 4, 2]
The modified deleted list is : [3, 7, 10]