Cai*_*von 10
您正在寻找的是汉明重量,并且有很多算法可以做到.这是另一个简单的问题:
def ones(n):
w = 0
while (n):
w += 1
n &= n - 1
return w
Run Code Online (Sandbox Code Playgroud)
使用很棒的collections
模块。
>>> from collections import Counter
>>> binary = bin(20)[2:]
>>> Counter(binary)
Counter({'0': 3, '1': 2})
Run Code Online (Sandbox Code Playgroud)
或者您可以使用内置功能count()
:
>>> binary = bin(20)[2:]
>>> binary.count('1')
2
Run Code Online (Sandbox Code Playgroud)
甚至:
>>> sum(1 for i in bin(20)[2:] if i == '1')
2
Run Code Online (Sandbox Code Playgroud)
但是最后一种解决方案比使用慢 count()