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

Python无Numpy提取多维数组行及Connect4网格行提取问题

解决Connect 4 AI中的行提取问题

嘿,我来帮你搞定这个Connect 4 AI开发的问题!咱们一步步拆解你遇到的核心问题,逐个解决。

问题根源:网格结构与提取逻辑不匹配

首先得明确:你的Grille是7列,每列6个元素(7个长度为6的列表,每个列表代表一列)。而你原来的代码Grille[:][r]其实是在取第r个列,不是行——因为Grille[:]是复制整个列的列表,再用[r]索引就是取第r个列;再加上你每次循环都用row_array = [Grille[:][r]]覆盖之前的结果,最后row_array自然只存了最后一个列,完全不是你想要的行。

正确提取行的方法(无需numpy)

要提取行,我们需要遍历每一行的索引(从0到5,因为每列有6个元素),然后从每个列中取出对应索引的元素,组成一行。比如第0行就是所有列的第0个元素,第1行就是所有列的第1个元素,以此类推。

修正后的row_array生成代码:

# 你的原始网格(7列,每列6个元素)
Grille = [[0,0,0,0,0,0], [0,0,0,0,0,0], [0,0,0,0,0,0], [0,0,0,0,0,0], [0,0,0,0,0,0], [0,0,0,0,0,0], [0,0,0,0,0,0]]
row_array = []

# 遍历每一行的索引(共6行)
for row_idx in range(6):
    # 构建当前行:从每个列中取出第row_idx个元素
    current_row = [column[row_idx] for column in Grille]
    row_array.append(current_row)

运行这段代码后,row_array就是6个长度为7的列表,每个列表对应网格的一行,比如row_array[0]就是[0,0,0,0,0,0,0],完全符合你的预期。

提取每行中的连续4个元素

接下来要从row_array的每行中提取连续4个元素,你原来的思路是对的,但要放在遍历每行的循环里执行:

Column_Count = 7  # 网格总共有7列,所以每行有7个元素

for row in row_array:
    # 每行可以提取 7-3=4 组连续4个元素
    for c in range(Column_Count - 3):
        four = row[c:c+4]
        # 这里可以添加你需要的逻辑,比如检查four中是否有4个相同的非0元素
        print(four)  # 示例输出:每次打印一组连续4个元素

额外小提醒

如果之后要处理Connect 4的列、对角线检查,列的提取其实就是你原来的Grille[r](直接取第r个列),对角线的话可以用类似的列表推导式来提取,不过先把行的问题搞定就好啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 12:42:46