【发布时间】:2016-04-09 11:50:01
【问题描述】:
在查看一些 SageMath 代码时,我遇到了以下 sn-p:
bits = n - sum(n.digits(2))
由于我不知道digitsdid 是什么,我继续尝试使用n = 5 的值:
n = 5
print(n.digits(2))
[1, 0, 1]
如果我运行完整的行,结果是(很明显)
n = 5
print(sum(n.digits(2)))
2
如何在纯 python 中实现这一点?转换为字符串和返回非常慢,所以我想避免这些。有没有快速的解决方案?
【问题讨论】:
-
您正在寻找一个数字中从1到1的位数?
-
一个数字的所有单个位的总和(因此数字位表示中 1 的数量)。 例如: 5 -> 101 -> 1+0+1 -> 2
标签: python performance binary sum sage