将4位整数转换为布尔列表

Nic*_*mer 4 python integer boolean bit

我有一个整数,我知道它在0到15之间,即可以用4位表示.我想将该数组的位表示作为布尔数组,即

0: [False, False, False, False],
1: [True, False, False, False],
2: [False, True, False, False],
# [...]
15: [True, True, True, True]
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到最好?

jep*_*pio 10

通过格式化为二进制:

def int_to_bool_list(num):
   bin_string = format(num, '04b')
   return [x == '1' for x in bin_string[::-1]]
Run Code Online (Sandbox Code Playgroud)

或按位和:

def int_to_bool_list(num):
    return [bool(num & (1<<n)) for n in range(4)]
Run Code Online (Sandbox Code Playgroud)

第一个函数要求bin_string内容被反转(with [::-1]),因为字符串格式化以我们读取它的方式格式化数字 - 最重要的位是第一个,而问题是要求最低位第一顺序的位.