如何将多行数字字符串转换为整数类型的二维数组?
三角形数字字符串转整数二维数组实现方案
核心实现逻辑
通过两层列表推导式分别处理行拆分和单行内的数字转换即可实现,不会出现一维数组或编译报错问题。
示例代码
第一步:定义输入的多行三角形字符串
# 示例为Project Euler第18题的输入三角形 tri_str = """75 95 64 17 47 82 18 35 87 10 20 04 82 47 65 19 01 23 75 03 34 88 02 77 73 07 63 67 99 65 04 28 06 16 70 92 41 41 26 56 83 40 80 70 33 41 48 72 33 47 32 37 16 94 29 53 71 44 65 25 43 91 52 97 51 14 70 11 33 28 77 73 17 78 39 68 17 57 91 71 52 38 17 14 91 43 58 50 27 29 48 63 66 04 68 89 53 67 30 73 16 69 87 40 31 04 62 98 27 23 09 70 98 73 93 38 53 60 04 23"""
第二步:一行代码完成转换
tri_arr = [[int(num) for num in line.split()] for line in tri_str.splitlines()]
代码说明
- 外层遍历
tri_str.splitlines()返回的每一行文本,每行对应生成二维数组的一个子列表 - 内层对单行文本调用
split()按空白符拆分得到单个数字字符串,再通过int()转换为整数 - 避免一维数组的核心是做两层遍历,先拆行再拆每行内的数字,不要直接对整个字符串按空格拆分
常见出错原因
- 仅使用单层列表推导式,直接将全串按空格拆分后统一转int,会得到一维数组
- 拆分顺序错误,未先按换行拆分就处理空格,也会导致结构错误
内容的提问来源于stack exchange,提问作者kdin
相关产品推荐
相关产品推荐

