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

如何使用itertools生成含固定值二进制列表的不确定位全组合

实现方案

核心思路

  • 先根据输入的频率列表生成基础模板,同时记录所有不确定位(x)的索引位置
  • 调用itertools.product生成所有不确定位的0/1取值组合(n个不确定位对应2^n种组合,10个不确定位仅1024种,性能完全可控)
  • 遍历每个取值组合,将对应值填充到基础模板的不确定位位置,输出完整的二进制列表

代码实现

import itertools

def generate_all_binary(freq_list):
    # 生成基础模板和不确定位索引
    base = []
    x_indexes = []
    for idx, freq in enumerate(freq_list):
        if freq == 0.0:
            base.append(0)
        elif freq == 1.0:
            base.append(1)
        else:
            # 不确定位先占位,后续填充
            base.append(None)
            x_indexes.append(idx)
    # 生成所有不确定位的取值组合
    for x_values in itertools.product([0, 1], repeat=len(x_indexes)):
        res = base.copy()
        # 填充不确定位
        for idx, val in zip(x_indexes, x_values):
            res[idx] = val
        yield res

# 示例测试
if __name__ == "__main__":
    test_freq = [0.0, 0.35555555555555557, 1.0, 1.0, 0.4388888888888889, 0.0, 0.35555555555555557, 1.0]
    for binary_list in generate_all_binary(test_freq):
        print(binary_list)

效果说明

以上测试代码运行后会输出8组(对应3个不确定位,2^3=8)符合要求的二进制列表,和你给出的示例输出完全匹配。针对255位长度、10个不确定位的场景,该函数会返回1024组符合要求的二进制列表,通过生成器逐次返回结果,不需要一次性存储所有组合,内存占用极低。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 11:57:04