如何用Python从空格分隔的数字字符串提取3x3矩阵列表
实现方法
基础Python实现
不需要依赖任何第三方库,用列表推导式就能简洁完成:
- 先把字符串分割并转换为整数列表:
x = "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18" nums = list(map(int, x.split()))
- 直接通过嵌套列表推导式生成目标结构:
# 先按9个元素为一组拆分(对应一个3x3矩阵),每组再拆成3个3元素子列表 result = [ [block[j:j+3] for j in range(0, 9, 3)] for block in [nums[i:i+9] for i in range(0, len(nums), 9)] ]
或者更紧凑的写法:
result = [ [nums[i+j*3 : i+j*3+3] for j in range(3)] for i in range(0, len(nums), 9) ]
第三方库(NumPy)实现
如果项目中已经在用NumPy,这个方法会更简洁:
import numpy as np x = "1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18" nums = np.array(list(map(int, x.split()))) # reshape的-1表示自动计算该维度的长度,这里会自动生成N个3x3矩阵 result = nums.reshape(-1, 3, 3).tolist()
两种方法最终输出都符合预期:[[[1,2,3],[4,5,6],[7,8,9]],[[10,11,12],[13,14,15],[16,17,18]]]
内容的提问来源于stack exchange,提问作者nicku
相关产品推荐
相关产品推荐

