如何修改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
相关产品推荐
相关产品推荐

