我有一个bool
的列表,我想将其转换为单个int
。例如:[True, True, False, True, False]
-> 010112->11 10
我发现了这个问题:如何将布尔列表转换为 int? 但它是 C# 中的,这对我没有帮助。
我第一次尝试是做
def bools2int(bools):
n = 0
for b in bools[::-1]:
n *= 2
n += b
return n
哪个有效。
但是有没有更python的方法可以做到这一点呢?它可以在一条线上完成吗?
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)
输出:
11
经过一番乱搞,我发现了这个
sum([b << i for i, b in enumerate(bools)])
我认为这是一个非常pythonic的解决方案。