我有一个整数,并且想将其转换为类似 bool 值的元组 - {0, 1}
具体来说。我想到的方式是tuple(int(b) for b in bin(my_int)[2:])
,但感觉不太好。执行此操作的惯用/规范方式是什么?
编辑:为了清楚起见,如果整数是 3
,元组将是 (0, 0, 0, 0, 0, 0, 1, 1)
。为了进一步澄清,假设整数位于 {0, 1, …, 255}
中。元组的长度应该是八。所以我现在拥有的(但旨在改进)是 tuple(int(b) for b in bin(my_int)[2:].zfill(8))
最佳答案
我不认为你的方法不好,但我找到了另一种方法:
def to_binary(num):
result = []
while num >= 1:
result.insert(0, num%2)
num//=2
return result
print(to_binary(5))
>>> [1, 0, 1]
或者您可以通过追加添加,最后通过 [::-1]
反向添加。说实话,我不记得哪个更快。
UPD [07.07.2022]
据我了解,你需要一个元组,如果它的长度小于八个字符,你需要在左边补0。
在这种情况下,代码会稍微改变一下:
def to_binary(num):
result = []
while num >= 1:
result.insert(0, num%2)
num//=2
result = tuple([0] * (max(8-len(result), 0)) + result)
return result
或者您也可以通过添加 zfill
方法来更新代码:
your_tuple = tuple(int(b) for b in bin(3)[2:].zfill(8))
关于python - 如何将整数转换为 bool 元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72889377/