首页 > 解决方案 > 将输入到 input() 中的字符串转换回二维矩阵

问题描述

在我用 CodeSkupltor3 编写的 python 程序中,数据作为单个数字存储在列表列表(二维矩阵)中。因为 CodeSkulptor 无法保存文件,所以我为用户添加了导出数据的选项。它被打印出来供用户复制到剪贴板。

以下是矩阵可能看起来的示例:

[[0, 3, 4, 3, 2], [1, 2, 1, 2, 3], [3, 3, 3, 1, 2], [3, 4, 0, 3, 2], [ 2、2、2、1、0]]

但是,主列表中的列表数量可能会有所不同,子列表中的整数数量也是如此。

input()当语句提示时,用户应该能够将数据粘贴回程序中。因为传入输入语句的所有数据都是字符串格式,所以需要转换回矩阵才能使用。

CodeSkulptor 没有num.pyeval()。我尝试过使用 的各种组合string.split(),但我尝试过的组合都没有正确分解它们。我也尝试过使用list(),但结果是字符串中的每个字符都成为列表中的一个项目:

['[','[','0',',','','3',',','','4',',','','3',',', '','2',']',',','','[','1',',','','2',',','','1',', ','','2',',','','3',']',',','','[','3',',','','3', ',', '', '3', ',', '', '1', ',', '', '2', ']', ',', '', '[', '3 ',',','','4',',','','0',',','','3',',','','2',']',',','','[','2',',','','2',',','','2',',','','1 ', ',', ' ', '0', ']', ']'

如何将字符串转回矩阵?

标签: pythonpython-3.xstringmatrixcodeskulptor

解决方案


这是一个解决方案:

a = '[[0, 3, 4, 3, 2], [1, 2, 1, 2, 3], [3, 3, 3, 1, 2], [3, 4, 0, 3, 2], [2, 2, 2, 1, 0]]'

lst_lst = []
for i in a[:-1].replace('[', '').split(']'):
    lst = []
    for carac in i:
        if carac not in [',', ' ']:
            lst.append(int(carac))
    lst_lst.append(lst)
lst_lst
-> [[0, 3, 4, 3, 2], [1, 2, 1, 2, 3], [3, 3, 3, 1, 2], [3, 4, 0, 3, 2], [2, 2, 2, 1, 0]]

推荐阅读