You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 3:如何统计列表中各二进制字符串的1的个数?

解决你的两个Python统计问题

咱们一步步来拆解这两个需求:

需求1:统计列表内数字二进制形式中1的总数

假设你的列表里是一组整数(比如对应需求2里二进制字符串的原数字:[28, 67]),要统计所有数字二进制里1的总个数,你可以这么做:

  • 对每个数字用bin()函数转成带0b前缀的二进制字符串
  • 用count('1')统计单个二进制字符串里1的数量
  • 最后把所有结果加起来得到总数

示例代码:

nums = [28, 67]
# 一行代码直接计算总数
total_ones = sum(bin(num).count('1') for num in nums)
print(total_ones)  # 输出6,因为28的二进制有3个1,67的二进制也有3个1

# 如果需要先得到每个数字的1的个数列表,再求和
count_per_num = [bin(num).count('1') for num in nums]
total_ones = sum(count_per_num)
print(count_per_num)  # 输出[3, 3]
print(total_ones)  # 输出6

需求2:统计列表中每个二进制字符串的1的个数

你之前用z.count('1')得到0,是因为列表的count()方法是用来找列表里完全等于参数的元素的数量——你的列表z里的元素是'0b111000'和'0b1000011',没有哪个元素是'1',所以自然返回0啦。

要实现你想要的[3,3],得遍历列表里的每个字符串,对每个字符串单独统计其中'1'的数量,用列表推导式就很方便:

z = ['0b111000','0b1000011']
result = [s.count('1') for s in z]
print(result)  # 输出[3, 3]

这里的s会依次取列表里的每个二进制字符串,s.count('1')会统计该字符串中所有'1'字符的数量,最终生成的列表就是每个元素对应的1的个数,完美符合你的期望。


内容的提问来源于stack exchange,提问作者m.d venkatesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:52:14