gpt4 book ai didi

python - 在Python中获取二进制数的0和1的数量

转载 作者:行者123 更新时间:2023-12-02 11:31:06 24 4
gpt4 key购买 nike

我正在尝试解决一个二进制难题,我的策略是将网格转换为 0 和 1,我想确保每一行都有相同数量的 0 和 1。

有没有办法在不迭代数字的情况下计算一个数字有多少个 1 和 0?

我目前正在做的是:

def binary(num, length=4):
return format(num, '#0{}b'.format(length + 2)).replace('0b', '')

n = binary(112, 8)
// '01110000'
and then
n.count('0')
n.count('1')

有没有更有效的计算(或数学方法)来做到这一点?

最佳答案

您正在寻找的是 Hamming weight一个数字。在较低级语言中,您可能会使用漂亮的 SIMD within a register技巧或库函数来计算它。在Python中,最短、最有效的方法是将其转换为二进制字符串并计算'1':

def ones(num):
# Note that bin is a built-in
return bin(num).count('1')

您可以通过从总位数中减去 ones(num) 来获得零的数量。

def zeros(num, length):
return length - ones(num)

演示:

>>> bin(17)
'0b10001'
>>> # leading 0b doesn't affect the number of 1s
>>> ones(17)
2
>>> zeros(17, length=6)
4

关于python - 在Python中获取二进制数的0和1的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20517570/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com