如何将这个字符串转换为列表的列表?
如果用户输入 [[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里面包含了你想要的列表的列表。