python:将1/0的列表转换为布尔列表

iwb*_*abn -1 python

试图将1/0的列表转换为布尔列表.

bool([1,0,1,0])似乎不起作用. [1,0,1,0] == 1不起作用.

还有另一种方式(希望非列表理解)吗?

Mit*_*pta 7

在python 2中

 bool_list = map(bool,int_list)
Run Code Online (Sandbox Code Playgroud)

在python 3中:

 bool_list = list(map(bool,int_list))
Run Code Online (Sandbox Code Playgroud)

  • 可能值得注意的是,`map`不会返回python 3中的列表. (3认同)

Rom*_*est 6

使用模块的解决方案numpy

import numpy as np

l = np.array([1,0,1,0])
print((l > 0).tolist())
Run Code Online (Sandbox Code Playgroud)

输出:

[True, False, True, False]
Run Code Online (Sandbox Code Playgroud)

l > 0- 测试数组的每个元素l,如果它大于0。这些测试的结果是结果数组的布尔元素


这种方法在处理多维数组时也相当好:

l = np.array([[1,0,1,0], [1,1,1,1], [0,0,1,0]])
print((l > 0).tolist())
Run Code Online (Sandbox Code Playgroud)

输出:

[[True, False, True, False], [True, True, True, True], [False, False, True, False]]
Run Code Online (Sandbox Code Playgroud)


Tho*_*mas 5

[x==1 for x in list]
Run Code Online (Sandbox Code Playgroud)

是一种通用方法,如果您有一个包含除0或以外的条目的列表,您可以轻松适应1