在 Python 中的列表中删除多个元素
要从 Python 列表中删除多个值,我们可以删除列表的实际值或要从列表中删除的值的索引。我们可以使用 if...else
控制语句、列表推导式、列表切片和 for
循环从 Python 中的列表中删除多个元素。
使用 if...else
控制语句从列表中删除多个元素
如果值满足特定条件,我们可以使用 if...else
控制语句从 Python 中的列表中删除多个值。如果元素的索引满足特定条件,也可以删除元素。
list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20]
print("Original list : ", list1)
for ele in list1:
if (ele % 2) != 0:
list1.remove(ele)
print("List after deleting all values which are odd : ", list1)
输出:
Original list : [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20]
List after removing all the odd values : [2, 4, 6, 8, 10, 20]
在这里,我们有一个整数列表,需要从列表中删除具有奇数值的元素。在这种情况下,我们循环遍历所有列表 l1
元素,如果元素具有奇数值,则使用 remove()
方法从列表中删除该元素。
使用 Python 中的列表推导方法从列表中删除多个元素
在 Python 中,列表推导是指从现有列表生成新列表的过程。列表推导式也可用于从列表中删除多个元素。我们可以通过从原始列表中删除要删除的值来创建一个新列表。
l1 = [2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 80, 99]
l2 = [x for x in l1 if x % 2 == 0]
print("Original list : ", l1)
print("List after deleting all the odd values present in List : ", l2)
输出:
Original List : [2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 80, 99]
List after deleting all the odd values present in List : [2, 4, 6, 8, 10, 20, 80]
在这里,我们从列表 l1
中创建列表 l2
,该列表仅包含 l1
中的所有偶数值。换句话说,我们可以说我们通过删除列表 l1
中的所有奇数值,从现有列表 l1
创建了一个新列表 l2
。
使用列表切片从列表中删除多个元素
我们还可以使用 List 切片方法从列表中删除多个元素。在这里,我们可以在 del
方法中放置从要从列表中删除的元素的起始索引到最后一个索引的元素范围。
我们没有在 del
方法中使用单个索引,而是使用从要从列表中删除的元素的开始到最后一个索引的一系列值。它将从列表中删除连续元素。我们必须注意,对于列表,Python 中值的索引从 0
开始。
l1 = [2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 80, 99]
print("Original list : ", l1)
del l1[2:5]
print("List after removing values at index 2, 3 and 4 : ", l1)
输出:
Original List : [2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 80, 99]
List after removing values at index 2, 3 and 4 : [1, 2, 6, 7, 8, 9, 10, 20, 80, 99]
它使用 del
方法从列表 l1
中删除索引 2
、3
和 4
处的值。
这里要注意的一件重要事情是第一个索引 2
是包含的,即列表 3
中索引 2
处的元素被删除,而最后一个索引是独占值,这意味着列表中索引 5
处的元素 6
不会被删除。
使用 for
循环从列表中删除多个元素
我们还可以使用 for
循环从列表中删除多个元素。
要应用此方法,我们必须存储要从列表中删除的元素的索引。但是随机删除元素将导致更改索引的值。我们的聪明策略是删除在列表中位置更大的元素。所以其他索引处元素的值不会改变。现在,我们将按降序对列表进行排序,以首先删除索引较高的元素。这种方法的代码如下所示。
l1 = [2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 80, 99]
print("Original list : ", l1)
indexes_to_be_removed = [0, 2, 5]
for idx in sorted(indexes_to_be_removed, reverse=True):
del l1[idx]
print("List after removing values at index 0, 2 and 5: ", l1)
输出:
Original List : [2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 80, 99]
List after removing values at index 0, 2 and 5: [3, 5, 6, 8, 9, 10, 20, 80, 99]
它使用 del
方法从列表 l1
中删除索引 0
、2
和 5
处的值。