Python中N×N矩阵满足条件后如何将首列剩余位置填充为1
实现方案
错误原因说明
你原本写法matrix[i:][0] = 1出错的核心原因是:matrix[i:]会返回从第i行开始的所有行组成的子列表,此时取[0]实际是获取这个子列表的第一个元素(也就是第i行本身),并非选中所有行的第0列,赋值逻辑不符合预期。
实现方式1:嵌套循环赋值
找到触发条件的行索引后,遍历剩余行直接修改第一列的值,逻辑直观易理解:
for i in range(len(str2)): if str2[i] == str1[0]: # 自定义判断条件 # 从当前行到最后一行,逐行修改第一列为1 for j in range(i, len(str2)): matrix[j][0] = 1 break else: matrix[i][0] = 0
实现方式2:标记位单次遍历
通过标记位控制填充状态,不需要嵌套循环,代码更简洁:
# 初始化填充1的标记为False should_fill = False for i in range(len(str2)): # 未触发填充时检查条件,满足则修改标记 if not should_fill and str2[i] == str1[0]: should_fill = True # 根据标记赋值,触发后所有行第一列都设为1 matrix[i][0] = 1 if should_fill else 0
内容的提问来源于stack exchange,提问作者Patrick_Chong
相关产品推荐
相关产品推荐

