如何根据矩阵中1的所在行修改列表元素?
根据二进制矩阵更新列表元素的实现方案
嘿,我来帮你搞定这个问题!咱们先把需求再明确一遍:
- 初始是全为5的列表,比如示例里的
[5,5,5,5,5] - 搭配一个仅含0和1的两行矩阵
- 更新规则:
- 矩阵第一行的1,对应列表同一位置元素加2
- 矩阵第二行的1,对应列表同一位置元素加3
- 最终得到更新后的新列表
用Python实现的解决方案
直接上可运行的代码,咱们一步步拆解:
# 初始化原始列表 v = [5, 5, 5, 5, 5] # 给定的二进制矩阵 m = [[0, 1, 1, 0, 0], [0, 0, 1, 1, 0]] # 遍历矩阵每一行,同时记录行索引 for row_idx, row in enumerate(m): # 根据行索引确定要添加的数值 add_num = 2 if row_idx == 0 else 3 # 遍历当前行的每个元素及对应位置 for idx, val in enumerate(row): if val == 1: v[idx] += add_num # 输出结果 print(v) # 输出: [5, 7, 10, 8, 5]
代码逻辑说明
- 先把示例里的初始列表和矩阵定义好,确保和需求完全匹配
- 用
enumerate遍历矩阵,既能拿到行内容,也能拿到行的索引(0对应第一行,1对应第二行) - 根据行索引判断要加的数值:第一行加2,第二行加3
- 再遍历当前行的每个元素,遇到值为1的元素,就给列表对应位置的元素加上对应数值
- 运行后得到的结果和示例里的
v1完全一致
这个写法逻辑清晰,要是以后矩阵规则有调整(比如新增行对应不同加数),只要修改add_num的判断逻辑就行,扩展性也不错。
内容的提问来源于stack exchange,提问作者kingdomking22
相关产品推荐
相关产品推荐

