将输入到 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.py
或 eval()
。我尝试过使用 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]]
在我用 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.py
或 eval()
。我尝试过使用 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]]