Python二进制求和
在查看一些SageMath代码时,我遇到了以下代码片段:Python二进制求和,python,performance,binary,sum,sage,Python,Performance,Binary,Sum,Sage,在查看一些SageMath代码时,我遇到了以下代码片段: bits = n - sum(n.digits(2)) 因为我不知道什么是数字,所以我继续尝试使用n=5: n = 5 print(n.digits(2)) [1, 0, 1] 如果我运行完整的行,结果是(相当明显) 我如何在纯python中实现这一点?转换为字符串和返回的速度非常慢,所以我想避免这些。有没有一个快速的解决方案?如果您想了解非零位的数量: bin(5).count("1") 您正在查找一个数字中的位数到1?一个数字的
bits = n - sum(n.digits(2))
因为我不知道什么是数字
,所以我继续尝试使用n=5
:
n = 5
print(n.digits(2))
[1, 0, 1]
如果我运行完整的行,结果是(相当明显)
我如何在纯python中实现这一点?转换为字符串和返回的速度非常慢,所以我想避免这些。有没有一个快速的解决方案?如果您想了解非零位的数量:
bin(5).count("1")
您正在查找一个数字中的位数到1?一个数字的所有单个位数之和(因此,数字位表示中的位数为1)。e、 g:5->101->1+0+1->2如果删除创建新列表的
[2://code>,我认为它的性能会更好。
bin(5).count("1")