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

给定k值,如何动态生成所有k位二进制数的列表?

生成指定位数的二进制数列表解决方案

方法一:数值转二进制 + 补前导零

直接遍历从0到2^k - 1的所有整数,将每个数转换为二进制字符串后,补前导零至指定长度k。

示例代码:

def generate_k_bit_binaries(k):
    return [bin(num)[2:].zfill(k) for num in range(2 ** k)]

代码说明:

  • 2 ** k:计算k位二进制数的总个数(比如k=3时对应8个数值)
  • bin(num):把整数转为带0b前缀的二进制字符串,例如bin(3)返回'0b11'
  • [2:]:去掉二进制字符串的0b前缀
  • zfill(k):在字符串左侧补零,确保最终长度为k

测试结果:

  • generate_k_bit_binaries(1) → ['0', '1']
  • generate_k_bit_binaries(2) → ['00', '01', '10', '11']
  • generate_k_bit_binaries(3) → ['000', '001', '010', '011', '100', '101', '110', '111']

方法二:笛卡尔积生成所有组合

通过itertools.product生成所有由'0'和'1'组成的长度为k的组合,再拼接成字符串。

示例代码:

from itertools import product

def generate_k_bit_binaries(k):
    return [''.join(bit_tuple) for bit_tuple in product('01', repeat=k)]

代码说明:

  • product('01', repeat=k):生成所有长度为k的'0'和'1'的笛卡尔积,返回结果为元组(比如k=2时是('0','0'), ('0','1'), ('1','0'), ('1','1'))
  • ''.join(bit_tuple):将元组中的字符拼接为完整的二进制字符串

注意:你提到k=4时生成0到16的二进制数,这里纠正一下:k=4的二进制数范围是0到15(共16个数),对应4位二进制最大值1111(十进制15),上述两种方法都会正确生成这16个4位二进制字符串。

内容的提问来源于stack exchange,提问作者John

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 12:35:19