我如何在Python中不将0或1评估为True或False

时间:2020-10-13 10:15:49

标签: python python-3.x

我有一个列表:

[2, 5, True, 1, 0, 4, False, False, True]

如何使1和0分别显示为1和0,而不是True和False?我正在尝试:

[True if X == True else False for X in list]

期望的结果是:

[False, False, True, False, False, False, False, False, True]

3 个答案:

答案 0 :(得分:1)

之所以会这样,是因为1和0分别是“真”和“假”。您可以使用is来解决此问题,该方法对True和False使用基础单例:

[True if X is True else False for X in list]

编辑:如注释中所述,由于底层实现,在某种意义上说True为“ 1样”和False为“ 0样”实际上更正确。比真假更不上口!

答案 1 :(得分:1)

您可以添加类型检查:

[isinstance(X, bool) and X for X in list]

注意:类型检查应该放在第一位,以确保表达式始终为布尔值。

答案 2 :(得分:0)

您需要通过isinstance(X, bool)

检查元素的类型

所以您的代码将是这样

[True if X == True and isinstance(X, bool)  else False for X in list]