如何在Python列表中的字符串中创建数字列表

时间:2016-05-24 03:08:36

标签: python string list integer

我有一个这样的清单:

[[['(0,1,2)','(3,4,5)'],['(5,6,7)','(9,4,2)']],[['(0,1,2)','(3,4,5)'],['(5,6,7)','(9,4,2)']]]

我想得到类似的东西:

[[[[0,1,2],[3,4,5]],[[5,6,7],[9,4,2]]],[[[0,1,2],[3,4,5]],[[5,6,7],[9,4,2]]]

我尝试过字符串理解,重新模块,拆分,剥离但似乎没有工作。谢谢!

2 个答案:

答案 0 :(得分:3)

递归似乎很简单:

l = [[['(0,1,2)','(3,4,5)'],['(5,6,7)','(9,4,2)']],[['(0,1,2)','(3,4,5)'],['(5,6,7)','(9,4,2)']]]

def convert(x):
    if isinstance(x, list):
        return [convert(y) for y in x]
    else:
        return [int(y) for y in x.strip('()').split(',')]

convert(l) # [[[[0, 1, 2], [3, 4, 5]], [[5, 6, 7], [9, 4, 2]]], [[[0, 1, 2], [3, 4, 5]], [[5, 6, 7], [9, 4, 2]]]]

答案 1 :(得分:0)

如果您想查看嵌套列表推导中的内容

startList = [[['(0,1,2)','(3,4,5)'],['(5,6,7)','(9,4,2)']],[['(0,1,2)','(3,4,5)'],['(5,6,7)','(9,4,2)']]]
new = [[[[int(x) for x in moreSub.strip("()").split(",")] for moreSub in subitem] for subitem in item] for item in startList]
print(new)