在python中将 boolean 值列表转换为二进制字符串的最快方法是什么?
例如boolList2BinString([True, True, False]) = '0b110'。
另外,我如何将该二进制字符串转换为二进制文字?这会比从 boolean 列表立即转换为二进制文字需要更多时间吗?怎么做呢?
例如boolList2Bin([True, True, False]) = 0b110。
谢谢!
最佳答案
关于您的第一个问题,您可以使用 list comprehension * 和 conditional expression :
>>> def boolList2BinString(lst):
... return '0b' + ''.join(['1' if x else '0' for x in lst])
...
>>> boolList2BinString([True, True, False])
'0b110'
>>>
关于您的第二个,您不能“将该二进制字符串转换为二进制文字”。顾名思义,literals必须按字面输入:
>>> x = 0b110
>>>
也许您的意思是希望从输出中删除引号?如果是这样,请使用
print
:>>> def boolList2BinString(lst):
... return '0b' + ''.join(['1' if x else '0' for x in lst])
...
>>> boolList2BinString([True, True, False])
'0b110'
>>> print(boolList2BinString([True, True, False]))
0b110
>>>
*注:我故意选择使用列表推导式
str.join
而不是生成器表达式,因为前者是 generally faster .
关于Python: boolean 列表到二进制字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22056486/