将输入到 input() 中的字符串转换回二维矩阵

Convert string entered into input() back to two dimensional matrix

在我用 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() 语句提示时将数据粘贴回程序。因为传入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', ']', ']'

如何将字符串转回矩阵?

这是一个解决方案:

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]]