如何在Python列表中删除True值?




如何在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。

  • 当列表的长度不等于info列表的长度时:

  • 假设正在处理的列表元素为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,接受一个数据列表作为参数。

  • 使用列表推导式创建一个新的列表,仅包含数据列表中与 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("Using list comprehension output:", delete_true_list_comprehension(sample_list.copy()))

输出

Using list comprehension output: [2, False, 4, 6]

策略 3:使用带有 Lambda 函数的 filter() 函数

算法

  • 创建一个名为 delete_true_filter 的函数,接受一个数据列表作为参数。

  • 利用 channel() 函数与 lambda 函数结合,过滤掉数据列表中与 “Valid” 不相等的元素。

  • 使用 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的函数,它接受一个数据列表作为参数。

  • 利用循环来检测数据列表中是否存在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("Using remove() Result:", delete_true_remove(sample_list.copy()))

输出

Using remove() Result: [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
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函数用于返回不满足指定函数条件的值。它接受两个输入:函数和要迭代的对象。filterfalse返回的值是传递给函数后返回false的值(作为参数传递)。

算法

  • 首先我们从itertools模块中导入filterfalse函数。



  • 接下来,我们创建一个函数delete_true_itertools,它接受一个列表作为参数。

  • 然后我们使用lambda函数和filterfalse来过滤掉列表中的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值的6种不同方法,其中包括了朴素方法、列表推导式、带有lambda函数的filter()函数、remove函数以及列表推导式结合enumerate()函数。最后,itertools模块的filterfalse函数也是可用的一种方式。最佳方法取决于特定的使用情况和性能要求,尽管对于较小的列表,所有方法都可以有效地除去True值。



Python 精选笔记
使用Python和Plotly Dash创建基于Web的数据可视化仪表板使用Python控制树莓派GPIO引脚使用Python和Pandas库构建股票价格预测模型如何在Python中解析XML并计算特定节点属性的实例?如何在Python中解析本地HTML文件?如何按多列对PySpark DataFrame进行排序?如何在Pygame中移动游戏角色?如何在Python中同时打开两个文件?如何使用Python移动文件夹及其子文件夹的列表?如何使用Python将多个文件夹合并成一个文件夹?如何使用Python将多个Excel文件合并成一个单一文件?如何使用Python Pandas按照共同的键合并多个TSV文件?如何使用PIL将透明的PNG图片与另一张图片合并?Python中嵌套函数是如何工作的?Python中的全局变量和局部变量?在Python函数中如何使用全局变量?如何从Python对象中获取源代码?如何在Python中返回一个函数?如何在Python中安装matplotlib?Python - 分割包含散乱字符的字符串Python - 记录列表XORPython – 向记录的末尾添加数据Python - 键值大于K的记录在Python中垂直打印列表Python - 列表中字符串平均长度Python列表中的交替循环Python程序实现混淆词游戏Python-记录联合Python程序计算列表中元组的重复项Python程序:将字符串的字符转换为相反的大小写Python - 打印给定年份列表中的闰年数量Python - 打印所有子列表中的共同元素Python - 删除嵌套列表中的所有元素如何在Python列表中检查空格?在Python中引发异常到另一个异常Python字符串中的范围复制Python程序计算包含列表的列表中列表的数量修改给定Python列表中的重复值Python - 检查元素是否在指定范围内出现从Python的元组列表中删除所有字符串如何使用Pygame添加颜色呼吸效果?如何在Bokeh中添加颜色条如何在Bokeh中添加颜色选择器?使用Python程序显示带有星边框的数字半菱形图案Python使用ipaddress模块确定给定的IPv4地址是否为保留地址使用ipaddress模块的Python程序来确定给定的IP地址是公网还是私网Python程序通过平方和连接给定数字的奇数位数来创建一个OTPPython程序创建以零为中心的列表Python程序计算字符串中的字符数Python程序将米转换为码,反之亦然Python程序:统计文本文件中的元音、行数和字符数Python程序计算文本文件中的单词数量Python程序,用于计算文本文件中空格的数量将字典的值转换为字符串的Python程序Python程序将浮点数转换为指数Python程序将整数转换为指数Python程序将整数转换为罗马数字将整数列表转换为字符串列表的Python程序Python程序将XML转换为字典Python程序:通过重复键对应的值次数将字典转换为列表将Dict of list转换为CSV的Python程序使用正则表达式统计Python程序中大写字母、小写字母、特殊字符和数字值的个数Python元组的并集Python - 嵌套和混合列表中的类型转换Python - 将列表转换为单值列表的元组如何在Python中打印上标和下标?如何在Python中打印多个参数?如何在Plotly-Python中将图例定位在图表内部?如何使用Pandas绘制时序图表?如何使用SciPy在Python中绘制Ricker曲线?如何在Python列表中删除True值?如何使用Python将字典的值转换为绝对值?如何使用Python将字典转换为K个大小的字典?如何使用Python将浮点数舍入到2位小数?如何在Python中将Excel转换为CSV如何在Python中对元组进行索引和切片?如何在Python中判断一个对象是否有属性?在Python中创建实例对象如何使用Python获取城市的经纬度?如何在Python中获取整数输入?如何交换给定 NumPy 数组的列?如何使用NumPy抑制对小数的科学计数法使用?如何使用Python将XML数据存储到MySQL数据库中?如何在Pandas DataFrame中减去两列?如何在Pandas DataFrame中标准化数据?如何堆叠多个Pandas DataFrames?如何使用scikit-learn的train_test_split()函数拆分数据集如何在Python中分割数据以进行训练和测试,而不使用Sklearn在Python set中找到最大值和最小值Python程序:找到长方体的体积、表面积和空间对角线如何在Python程序中获取字符串的K个可能切片如何使用Altair在Python中制作密度图?生成一次性密码(OTP)的Python程序Python程序:找出数组中可被给定数整除的元素的XOR寻找巨大最大公约数(Jumbo GCD)子数组的Python程序如何在OpenCV Python中查找图像轮廓的边界矩形?如何在Python脚本所在的目录中打开文件?如何在Anaconda中安装Python包?如何在OpenCV Python中旋转图像?如何给定完整路径导入Python模块?如何在Python中从另一个函数调用变量?使用Python的Matplotlib在X轴上绘制日期如何在Python中不使用math模块进行平方根运算?如何在Python Tkinter中给Frame添加边框?如何从Python函数返回一个字典?Python程序获取元组中的第一个和最后一个元素如何求一个Python字典的值的总和?Python Pandas - 查找列的最大值并返回其对应的行值机器人流程自动化 - 简介机器学习中的逻辑回归损失函数如何从Python日期中减去一天?将物联网和机器学习相结合,使我们的未来更智能机器学习中的Boosting | Boosting和AdaBoost如何在Python中将时间戳字符串转换为datetime对象?如何在Python中将变量名转换为字符串?什么是Python中的.pyc文件?Python - 检查列表中的所有元素是否相同如何在Python Plotly中设置Y轴的范围?如何将Python日期转换为Unix时间戳?Python中的Turtle绘图编程如何在Python中的给定位置插入一个对象到列表中?如何在Python中进行日期验证?如何使用Python将两个图并排显示?在Python中的方法和函数之间的区别Python中的PYTHONPATH环境变量是什么?如何对Python日期字符串列表进行排序?在Python的Pandas中向现有的DataFrame中添加新列如何将Python元组转换为字典?Python - 使用Pandas读取没有标题的csv文件?如何使用OpenCV Python在图像中检测矩形和正方形?如何使用OpenCV在Python中改变图像的对比度和亮度?如何在Python中将日期时间转换为UTC时间戳?如何列出Python模块中的所有函数?Python程序查找字符串中的所有重复字符使用Python进行文件搜索如何在Python Tkinter中更改按钮大小?如何在Python shell中了解/更改当前目录?如何在Python中检查一个字符是否为大写字母?如何在OpenCV Python中对图像进行归一化?在Python中更新列表如何在Python中生成不重复的随机数?