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

时间:2019-03-22 12:36:10

标签: python python-3.x string matrix codeskulptor

在我用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',']',']'

如何将字符串转换回矩阵?

1 个答案:

答案 0 :(得分:1)

这是一个解决方案:

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