当使用python将二进制数存储在基数10中时,是否有更好的方法来计算二进制数中的数量?我有一大堆无符号整数,每个整数都与图上活动边的映射相关联。我想计算有效边数,例如当数字转换为二进制时,结果中有多少“1”?最小的工作示例如下,但我确信无需借助字符串转换即可完成。
A = [0,1,33,2,18,4,12,8,16,32,]
bin_str = '{0:0b}'
B = [bin_str.format(a) for a in A]
count = [len([c for c in b if c=='1']) for b in B]
print A
print B
print count
> [0, 1, 33, 2, 18, 4, 12, 8, 16, 32]
> ['0', '1', '100001', '10', '10010', '100', '1100', '1000', '10000', '100000']
> [0, 1, 2, 1, 2, 1, 2, 1, 1, 1]
编辑:查找表中的related question提示,以及依赖于魔术位的内容。目前还不清楚这些解决方案是否适用于64位整数(这是该问题的已知最大值),也不是特定于python的。