首页 > 解决方案 > 如何删除所有这些“错误”布尔值

问题描述

如何从列表中删除所有“假”布尔值?

我将 csv 图表的值转换为布尔值,然后转换为具有此功能的列表:

new_list=list1.values.tolist()

但是我怎样才能删除所有的 'False' 和 '0' 并只显示所有的 'True' 和 '1' 值?

新列表:

 [0, 0, 0, 0, 0, 0, True, False, False, False, False, False, True],
 [0, 0, 0, 0, 0, 0, True, False, False, False, False, True, True],
 [1, 0, 0, 0, 0, 0, True, False, False, True, False, False, True],
 [0, 0, 0, 0, 0, 0, True, False, False, False, False, False, True],
 [0, 0, 0, 0, 0, 0, True, True, False, False, False, False, True],
 [0, 0, 0, 0, 0, 0, True, False, False, False, False, False, True],
 [0, 0, 0, 0, 0, 0, True, False, False, False, False, False, True],
 [0, 0, 0, 0, 0, 0, True, False, False, False, False, False, True],
 [1, 0, 0, 0, 0, 0, True, False, True, True, False, True, True],
 [0, 0, 0, 0, 0, 0, True, False, False, False, False, False, True],

标签: pythonpython-3.8

解决方案


您可以使用这样的简单列表推导:

a = [1, 0, 0, 0, 0, 0, True, False, False, True, False, False, True]
b = [ x for x in a if x]

这将只留下评估为“真”的值,即布尔真、任何非 0 的整数和任何非空字符串。

如果你有一个列表列表,你可以像这样嵌套它们:

new_list = [
   [0, 0, 0, 0, 0, 0, True, False, False, False, False, False, True],
   [0, 0, 0, 0, 0, 0, True, False, False, False, False, True, True],
   [1, 0, 0, 0, 0, 0, True, False, False, True, False, False, True],
   [0, 0, 0, 0, 0, 0, True, False, False, False, False, False, True],
   [0, 0, 0, 0, 0, 0, True, True, False, False, False, False, True],
   [0, 0, 0, 0, 0, 0, True, False, False, False, False, False, True],
   [0, 0, 0, 0, 0, 0, True, False, False, False, False, False, True],
   [0, 0, 0, 0, 0, 0, True, False, False, False, False, False, True],
   [1, 0, 0, 0, 0, 0, True, False, True, True, False, True, True],
   [0, 0, 0, 0, 0, 0, True, False, False, False, False, False, True]]

clean_list = [[x for x in y if x] for y in new_list ]

推荐阅读