在 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
處的值。