python - 如何将整数转换为 bool 元组

标签 python

我有一个整数,并且想将其转换为类似 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/

相关文章:

python - 如何确定二叉树节点是左 child 还是右 child ?

python - matplotlib 中的 set_xlim、set_ylim、set_zlim 命令无法裁剪显示的数据

python - 按随机顺序做事?

python - python扭曲中的循环调用不起作用

python - 发送大量数据包而不是 1 个 SSL Python

python - Telegram webhooks POST 请求的负载为空

用于检查 zip 文件是否损坏的 Python 脚本

python - python中yield值存储在哪里

python - 如何使用 Python 将日期时间属性添加到 JPG 文件中,以便在 Google Photos 中正确建立索引?

python - FTP 类的 mlsd 方法返回的大小单位