如何将布尔值列表转换为单个 int,其中每个布尔值被解释为一个位?

Ple*_*yos 3 python int boolean list type-conversion

我有一个 s 列表bool,我想将其转换为单个int. 例如:[True, True, False, True, False]-> 01011 2 -> 11 10

我发现这个问题:How do I conversion a boolean list to int? 但它是用 C# 编写的,这对我没有帮助。

我的第一次尝试是做

def bools2int(bools):
    n = 0
    for b in bools[::-1]:
        n *= 2
        n += b
    return n
Run Code Online (Sandbox Code Playgroud)

这有效。

但是有没有更Pythonic的方法来做到这一点?可以一行完成吗?

Chr*_*ris 6

IIUC,使用内置int(x, base=2)

l = [True, True, False, True, False]

def bool2int(bools):
    return int(''.join(str(int(i)) for i in reversed(bools)), 2)
bool2int(l)
Run Code Online (Sandbox Code Playgroud)

输出:

11
Run Code Online (Sandbox Code Playgroud)