【问题标题】:Python Binary Summation [duplicate]Python二进制求和[重复]
【发布时间】: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


【解决方案1】:

如果您正在查看非零位数:

bin(5).count("1")

【讨论】:

  • 我认为如果您删除 [2:] 会创建一个新列表,它的性能会更好。
猜你喜欢
  • 2019-11-09
  • 1970-01-01
  • 1970-01-01
  • 2017-11-24
  • 2020-01-21
  • 2023-04-01
  • 2014-08-02
  • 2020-11-24
  • 1970-01-01
相关资源
最近更新 更多