如何在 Python 列表中刪除 True 值?
在 Python 中,列表可能是最常用的資料結構,允許我們儲存不同的元素。有時,我們可能會遇到需要從列表中刪除特定元素的情況。在本文中,我們將討論五種不同的方法來從 Python 列表中刪除 True 值。我們將檢查演算法、給出程式碼示例、顯示結果,並最後總結這些方法。
介紹
假設我們有一個包含布林型別和不同資料型別的組合的列表,我們需要從中刪除所有 True 值。Python 提供了幾種方法來完成此任務。我們將探討 6 種不同的方法來處理不同的偏好和用例。
讓我們首先檢視一個示例輸入和輸出。
輸入
[True, 2, False, True, 4, True, 6, True]
輸出
[2, False, 4, 6]
說明:True 是一個布林值,表示邏輯真狀態。有兩個內建的布林常量,分別是 True 和 False。
我們的目標是從列表中刪除 True 值,並保留所有其他值。在上面的輸入中,True 出現在位置(而非索引)1、4、6、8,這些位置被刪除,因此只剩下列表中其餘的值 2、False、4 和 6。
方法 1:樸素方法
演算法
建立一個名為 delete_true_naive 的函式,它接受一個數據列表作為引數。
初始化一個列表索引變數為 0。
當列表的長度不等於輸入列表的長度時
如果當前列表元素為 True,則使用 pop() 方法將其刪除。
否則,將列表索引加 1。
返回修改後的資料列表
示例
def delete_true_naive(input_list):
index = 0
while index < len(input_list):
if input_list[index] == True:
input_list.pop(index)
else:
index += 1
return input_list
sample_list = [True, 2, False, True, 4, True, 6, True]
print("Naive Method Output:", delete_true_naive(sample_list.copy()))
輸出
Naive Method Output: [2, False, 4, 6]
方法 2:使用列表推導式
演算法
建立一個名為 delete_true_list_comprehension 的函式,它接受一個數據列表作為引數。
使用列表推導式建立一個新的列表,該列表僅包含資料列表中不等於 True 的元素。
返回新列表。
示例
def delete_true_list_comprehension(input_list):
return [element for element in input_list if element != True]
sample_list = [True, 2, False, True, 4, True, 6, True]
print("Using list comprehension output:", delete_true_list_comprehension(sample_list.copy()))
輸出
Using list comprehension output: [2, False, 4, 6]
方法 3:使用 filter() 函式和 Lambda 函式
演算法
建立一個名為 delete_true_filter 的函式,它接受一個數據列表作為引數。
使用 filter() 函式和一個 lambda 函式來過濾資料列表中不等於 True 的元素。
使用 list() 函式將過濾後的結果轉換回列表。
返回過濾後的列表。
示例
def delete_true_filter(input_list):
return list(filter(lambda x: x != True, input_list))
sample_list = [True, 2, False, True, 4, True, 6, True]
print("Using filter() Result:", delete_true_filter(sample_list.copy()))
輸出
Using filter() Result: [2, False, 4, 6]
方法 4:使用 remove()
演算法
建立一個名為 delete_true_remove 的函式,它接受一個數據列表作為引數。
使用 while 迴圈,只要 True 存在於資料列表中就重複迴圈。
在迴圈內部,使用 remove() 方法刪除列表中 True 的第一個出現。
返回修改後的資料列表。
示例
def delete_true_remove(input_list):
while True in input_list:
input_list.remove(True)
return input_list
sample_list = [True, 2, False, True, 4, True, 6, True]
print("Using remove() Result:", delete_true_remove(sample_list.copy()))
輸出
Using remove() Result: [2, False, 4, 6]
方法 5:使用列表推導式和 enumerate() 函式
演算法
建立一個名為 delete_true_enum 的函式,它接受一個數據列表作為引數。
結合使用列表推導式和 enumerate() 函式來遍歷資料列表,同時跟蹤每個元素的索引和值。
只將值不等於 True 的元素新增到新列表中。
返回新列表。
示例
def delete_true_enum(input_list):
return [value for index, value in enumerate(input_list) if value != True]
# Sample list
sample_list = [True, 2, False, True, 4, True, 6, True]
# Output
print("Using List Comprehension and enumerate() Output:", delete_true_enum(sample_list.copy()))
輸出
Using List Comprehension and enumerate() Output: [2, False, 4, 6]
方法 6:使用 itertools.filterfalse()
itertools 模組通常用於處理迭代場景,filterfalse 用於返回從指定函式返回 False 值的值。它接收兩個輸入:函式;要迭代的物件;filterfalse 返回的值是那些在傳遞給函式(作為引數)後返回 False 的值。
演算法
首先,我們從 itertools 模組匯入 **filterfalse()** 函式。
下一步是建立一個名為 **delete_true_itertools** 的函式,它接受一個輸入列表作為引數。
然後,我們使用 **filterfalse()** 和一個 lambda 函式來過濾列表中 True 值。
之後,我們使用 **list()** 函式將過濾後的結果轉換回列表。
最後,返回不包含 True 值的新列表。
示例
from itertools import filterfalse
def delete_true_itertools(input_list):
return list(filterfalse(lambda x: x == True, input_list))
sample_list = [True, 2, False, True, 4, True, 6, True]
print("Using itertools.filterfalse() Result:", delete_true_itertools(sample_list.copy()))
輸出
Using itertools.filterfalse() Result: [2, False, 4, 6]
結論
在這篇文章中,我們學習了六種不同的方法來從 Python 列表中刪除 True 值,包括樸素方法、列表推導式、帶有 lambda 函式的 filter()、remove 函式以及結合使用列表推導式和 enumerate()。最後,itertools 模組的 filterfalse 函式也屬於可用的方法之一。最佳方法將取決於具體的用例和效能要求,儘管對於較小的列表,所有方法都可以有效地刪除 True 值。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP