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

如何修改Python代码生成每行递增交替重复的+1/-1矩阵

如何生成每行交替重复次数递增的±1矩阵?

需求说明

需要生成一个n×n的矩阵,满足每行中+1和-1交替重复,且重复次数随行数递增:

  • 第1行:+1、-1各重复1次,循环填充
  • 第2行:+1、-1各重复2次,循环填充
  • ...
  • 第i行:+1、-1各重复i次,循环填充

目标模式示例(n=10):

+1 -1 +1 -1 +1 -1 +1 -1 +1 -1
+1 +1 -1 -1 +1 +1 -1 -1 +1 +1
+1 +1 +1 -1 -1 -1 +1 +1 +1 -1
+1 +1 +1 +1 -1 -1 -1 -1 +1 +1 
+1 +1 +1 +1 +1 -1 -1 -1 -1 -1
+1 +1 +1 +1 +1 +1 -1 -1 -1 -1
+1 +1 +1 +1 +1 +1 +1 -1 -1 -1
+1 +1 +1 +1 +1 +1 +1 +1 -1 -1
+1 +1 +1 +1 +1 +1 +1 +1 +1 -1
+1 +1 +1 +1 +1 +1 +1 +1 +1 +1

现有问题代码

当前代码逻辑错误,无法实现每行递增的重复次数,代码如下:

def generate_matrix_pattern(n):
    matrix = [[1] * n for _ in range(n)]
    pos = 1
    neg = -1
    for i in range(n):
        for j in range(i, n):
            if (j-i) % 2 == 0:
                matrix[i][j] = pos
            else:
                matrix[i][j] = neg
    
    return matrix

现有代码输出

上述代码生成的错误模式:

+1 +1 -1 +1 -1 +1 -1 +1 -1 +1
+1 +1 +1 -1 +1 -1 +1 -1 +1 -1
+1 +1 +1 +1 -1 +1 -1 +1 -1 +1
+1 +1 +1 +1 +1 -1 +1 -1 +1 -1
+1 +1 +1 +1 +1 +1 -1 +1 -1 +1
+1 +1 +1 +1 +1 +1 +1 -1 +1 -1
+1 +1 +1 +1 +1 +1 +1 +1 -1 +1
+1 +1 +1 +1 +1 +1 +1 +1 +1 -1
+1 +1 +1 +1 +1 +1 +1 +1 +1 +1

修改后的代码

调整逻辑,根据每行的重复次数(第i行对应重复i次)来计算每个位置的取值:

def generate_matrix_pattern(n):
    matrix = []
    for i in range(1, n+1):
        row = []
        # 每个周期是i个+1 followed by i个-1
        cycle = [1]*i + [-1]*i
        # 填充整行,循环使用周期
        for j in range(n):
            row.append(cycle[j % len(cycle)])
        matrix.append(row)
    return matrix

# 测试打印(格式化为示例中的+1/-1形式)
n = 10
result = generate_matrix_pattern(n)
for row in result:
    print(' '.join('+1' if num == 1 else '-1' for num in row))

逻辑解释

  • 外层循环遍历每一行,行号从1到n(对应重复次数i)
  • 为每行生成一个周期序列:i个1 + i个-1
  • 对该行的每个位置j,通过j % len(cycle)循环取周期内的元素,填充整行
  • 最后打印时将1转换为+1,-1转换为-1,匹配目标格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 14:53:10