如何将这个字符串转换为列表的列表?

15 投票
6 回答
30675 浏览
提问于 2025-04-15 21:38

如果用户输入 [[0,0,0], [0,0,1], [1,1,0]] 并按下回车,程序应该把这个字符串转换成几个列表;一个列表包含 [0][0][0],另一个列表包含 [0][0][1],最后一个列表包含 [1][1][0]

请问Python有没有好的方法来处理这个问题呢?

6 个回答

25

在编程中,有时候我们需要把一些代码放在一起,这样可以让程序更整洁,也更容易管理。比如说,你可能会写一个函数,这个函数就像一个小工具,可以完成特定的任务。通过把相关的代码放在一个地方,我们可以更方便地调用它们,而不需要每次都重复写。

另外,使用函数还可以减少错误,因为你只需要确保这个函数的代码是正确的,而不需要在每个地方都检查一遍。这样一来,程序的运行效率也会提高。

总之,把代码组织得好,不仅能让你的程序看起来更专业,还能让你在调试和维护时省去很多麻烦。

>>> import json
>>> json.loads('[[0,0,0], [0,0,1], [1,1,0]]')
[[0, 0, 0], [0, 0, 1], [1, 1, 0]]
54
>>> import ast
>>> ast.literal_eval('[[0,0,0], [0,0,1], [1,1,0]]')
[[0, 0, 0], [0, 0, 1], [1, 1, 0]]
>>> ast.literal_eval('[(0,0,0), (0,0,1), (1,1,0)]')
[(0, 0, 0), (0, 0, 1), (1, 1, 0)]

关于元组

10

这个方法比Satoru的更灵活,而且不需要用到任何库。不过,它对更深层次的嵌套列表就不太管用了。要处理这种情况,我觉得你可能需要用递归函数(或者循环),或者使用eval。

str = "[[0,0,0],[0,0,1],[1,1,0]]"
strs = str.replace('[','').split('],')
lists = [map(int, s.replace(']','').split(',')) for s in strs]

现在,lists里面包含了你想要的列表的列表。

撰写回答