如何删除 Python 列表中的 True 值?
在 Python 中,列表可能是最常用的数据结构之一,它允许我们存储不同的元素。有时,我们可能会遇到想要从列表中删除特定元素的情况。在本文中,我们将讨论从 Python 列表中删除 True 值的五种不同方法。我们将研究算法,提供代码示例,展示结果,并以方法的相关性结束。
简介
考虑这样一种情况,我们有一个包含布尔类型和不同信息类型的组合的列表,我们需要从该列表中删除所有 True 事件。Python 为我们提供了几种完成这项任务的方法。我们将研究 6 种不同的方法来特别处理不同的倾向和用例。
让我们首先看一个示例输入和输出。
输入
[True, 2, False, True, 4, True, 6, True]
输出
[2, False, 4, 6]
说明: True 是一个布尔值,表示逻辑 True 状态。有 2 个内置常量布尔值,分别是 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 方法输出:", delete_true_naive(sample_list.copy()))
输出
Naive 方法输出:[2, False, 4, 6]
方法 2:使用列表理解
算法
创建一个函数 delete_true_list_comprehension,将数据列表视为其冲突。
使用列表理解创建另一个列表,该列表仅包含数据列表中与 Valid 不相同的那些元素。
返回新列表。
示例
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("使用列表理解输出:", delete_true_list_comprehension(sample_list.copy()))
输出
使用列表理解输出:[2, False, 4, 6]
策略 3:使用 filter() 函数和 Lambda 函数
算法
创建一个函数 delete_true_filter,将数据列表视为其争议。
使用 channel() 函数和 lambda 函数过滤数据列表中与 Valid 不匹配的元素。
使用 rundown() 函数将分离的结果转换回列表。
返回过滤后的列表。
示例
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("使用 filter() 结果:", delete_true_filter(sample_list.copy()))
输出
使用 filter() 结果:[2, False, 4, 6]
策略 4:利用 remove()
算法
创建一个函数 delete_true_remove,将数据列表确认为其冲突。
使用时间圈重复数据列表中 Clear 可用的所有时间。
在圈内,使用 remove() 方法从列表中删除 Valid 的关键事件。
返回更改后的数据列表。
示例
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("使用 remove() 结果:", delete_true_remove(sample_list.copy()))
输出
使用 remove() 结果:[2, False, 4, 6]
方法 5:使用列表推导和 enumerate() 函数
算法
创建一个函数 delete_true_enum,接受信息列表作为其参数。
使用列表推导和 count() 函数来强调信息列表,同时监控每个元素的列表和值。
只记住新列表中值不等于 True 的元素。
返回新的列表。
示例
def delete_true_enum(input_list): return [value for index, value in enumerate(input_list) if value != True] # 示例列表 sample_list = [True, 2, False, True, 4, True, 6, True] # 输出 print("使用列表推导和 enumerate() 输出:", delete_true_enum(sample_list.copy()))
输出
使用列表推导和 enumerate() 输出:[2, False, 4, 6]
方法 6:使用 itertools.filterfalse()
itertools 模块通常用于处理迭代场景,filterfalse 用于返回从指定函数返回假值的值。它接受 2 个输入:函数;要迭代的对象; 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("使用 itertools.filterfalse() 结果:", delete_true_itertools(sample_list.copy()))
输出
使用 itertools.filterfalse() 结果:[2, False, 4, 6]
结论
在这篇文章中,我们了解了 6 种从 Python 列表中删除 True 值的不同方法,包括简单方法、列表推导、带有 lambda 函数的 filter()、remove 函数以及列表推导与 enumerate() 结合使用。最后,itertools 模块的 filterfalse 函数也是可用方法之一。最佳方法将取决于特定用例和性能需求,尽管对于较小的列表,所有方法都可以有效地删除 True 值。