Python实现:将含硬编码换行的数字字符串转为矩阵
解决矩阵生成问题的思路与代码调整
我明白你的困扰啦——你已经完成了按行分割字符串,也知道怎么把一串数字字符串转成整数列表,但不知道怎么把这两个操作结合起来生成二维矩阵对吧?其实核心就是把你写的数字转换逻辑逐行复用,而不是直接作用在整个字符串上。
我们来调整一下你的Matrix类代码:
class Matrix: def __init__(self, matrix_string): # 初始化存储矩阵的列表 self.matrix = [] # 按换行符分割输入字符串,得到每一行的内容 lines = matrix_string.splitlines() # 遍历每一行,逐行处理成数字列表 for line in lines: # 1. 去掉行首尾的空白字符(避免开头/结尾的空格导致分割出空字符串) # 2. 按空白字符分割成单个数字字符串(自动处理多个空格的情况) # 3. 把每个数字字符串转成整数,组成该行的列表 row = [int(num) for num in line.strip().split() if num.isdigit()] # 将处理好的行添加到矩阵中 self.matrix.append(row)
代码解释
splitlines():把输入的带换行的字符串拆分成每行的字符串列表,比如输入" 1 8 7 \n 6 18 2 \n 1 9 7 "会得到[" 1 8 7 ", " 6 18 2 ", " 1 9 7 "]。line.strip():去除每行首尾的空格,确保我们不会因为行首/行尾的空白而分割出空字符串。split():不带参数时会自动按任意数量的空白字符分割(包括单个空格、多个空格、制表符等),完美适配输入里的格式。- 列表推导式
[int(num) for num ...]:把每行分割后的数字字符串逐个转成整数,组成该行的列表,再添加到总矩阵里。
示例使用
input_str = " 1 8 7 \n 6 18 2 \n 1 9 7 " my_matrix = Matrix(input_str) print(my_matrix.matrix) # 输出: [[1, 8, 7], [6, 18, 2], [1, 9, 7]]
这样就完全实现了你想要的矩阵生成功能,而且完全是手动实现,符合你练习的需求~
内容的提问来源于stack exchange,提问作者Will Gosnold
相关产品推荐
相关产品推荐

