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

如何遍历两行单1三列单元格的全部9种二进制组合?

遍历两行三列的所有9种单1组合实现方案

这个需求其实很简单,本质就是求两行独立选择的笛卡尔积——第一行的3种可能(A1=1、B1=1、C1=1)和第二行的3种可能两两组合,刚好覆盖全部9种情况。

所有组合的直观展示

先给你列全所有9种情况,方便你对照:

  • 第一行A=1,第二行A=1
  • 第一行A=1,第二行B=1
  • 第一行A=1,第二行C=1
  • 第一行B=1,第二行A=1
  • 第一行B=1,第二行B=1
  • 第一行B=1,第二行C=1
  • 第一行C=1,第二行A=1
  • 第一行C=1,第二行B=1
  • 第一行C=1,第二行C=1

代码实现(Python)

我给你写两种实现方式,一种用标准库简化代码,一种手动循环更直观:

方式1:用itertools.product生成笛卡尔积

这个方法最简洁,直接调用库函数生成所有组合:

import itertools

# 定义每行的三种可能:依次对应[A列=1, B列=1, C列=1]
row_options = [
    [1, 0, 0],
    [0, 1, 0],
    [0, 0, 1]
]

# 生成两行所有可能的组合(笛卡尔积)
all_combinations = itertools.product(row_options, repeat=2)

# 格式化输出成你给的表格样式
print(" A B C")
print("+---+---+---+")
for combo_idx, (row1, row2) in enumerate(all_combinations, start=1):
    print(f"{combo_idx} | {row1[0]} | {row1[1]} | {row1[2]} |")
    print("+---+---+---+")
    print(f"2 | {row2[0]} | {row2[1]} | {row2[2]} |")
    print("+---+---+---+")
    print()  # 空行分隔不同组合

方式2:手动嵌套循环(无需库依赖)

如果不想用第三方库,直接嵌套两个for循环也能实现:

# 定义每行的三种可能
row_options = [
    [1, 0, 0],
    [0, 1, 0],
    [0, 0, 1]
]

print(" A B C")
print("+---+---+---+")
combo_count = 0
# 遍历第一行的所有可能
for row1 in row_options:
    # 对每种第一行的情况,遍历第二行的所有可能
    for row2 in row_options:
        combo_count += 1
        print(f"{combo_count} | {row1[0]} | {row1[1]} | {row1[2]} |")
        print("+---+---+---+")
        print(f"2 | {row2[0]} | {row2[1]} | {row2[2]} |")
        print("+---+---+---+")
        print()

核心思路

不管用哪种方式,核心逻辑都是:

  • 先定义每行的3种合法状态(只有一个1,其余为0)
  • 遍历第一行的每个状态,对每个状态再遍历第二行的所有状态,这样3×3=9种组合就全部被覆盖了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:38:48