如何修改Python矩阵元素,实现每行随机相邻位置赋值为1
实现注意事项
- 首先要修正随机索引的取值范围:因为需要同时给
idx和idx+1两个位置赋值,所以索引最大值不能超过w-2,否则会出现数组下标越界报错,你原代码写的randint(0,9)在w=10的场景下有概率取到9,会触发越界问题。 - 不要写死单个变量存储每行的随机索引,直接通过循环遍历矩阵的每一行处理即可,适配任意高度的矩阵。
完整可运行代码
import random w, h = 10, 3 # 初始化全0矩阵 matrix = [[0 for _ in range(w)] for _ in range(h)] # 遍历每一行生成随机位置并赋值1 for row in matrix: # 生成合法随机索引 rand_idx = random.randint(0, w-2) row[rand_idx] = 1 row[rand_idx + 1] = 1 # 按示例格式输出矩阵 for row in matrix: print(''.join(map(str, row)))
如果你需要单独保留每行的随机索引(对应原代码里的a/b/c),可以用以下写法:
import random w, h = 10, 3 matrix = [[0 for _ in range(w)] for _ in range(h)] # 提前存储每行的随机索引,顺序对应第1行到第h行 rand_idx_list = [random.randint(0, w-2) for _ in range(h)] print("每行随机索引:", rand_idx_list) for row_idx in range(h): current_rand = rand_idx_list[row_idx] matrix[row_idx][current_rand] = 1 matrix[row_idx][current_rand + 1] = 1 # 输出效果 for row in matrix: print(''.join(map(str, row)))
当手动指定rand_idx_list = [5,2,1]时,输出结果和你给出的示例完全一致:
0000011000 0011000000 0110000000
内容的提问来源于stack exchange,提问作者kingdomking22
相关产品推荐
相关产品推荐

