Python:列表列表,从字符串到Ints的更改

时间:2016-04-27 16:55:13

标签: python python-2.7

x =[['+1', '+2', '+3', '+4', '+5', '+6']] 

y = [['+1', '-3', '-6', '-5'], ['+2', '-4']]

无论如何要将我的列表列表从字符串更改为整数?

我试过

def changy(foo):
    new = []
    for i in xrange(len(foo)):
        r = map(int, foo[i])
        new.append(r)
    return new
changy(x)

当我跑

print changy(y)

我的输出正是我想要的

[[1, -3, -6, -5], [2, -4]]

每当我跑x时我都会

  

ValueError:基数为10的int()的无效文字:' +'

感谢任何帮助

2 个答案:

答案 0 :(得分:2)

ValueError: invalid literal for int() with base 10: '+'表示您首先迭代主列表,然后是嵌套列表,然后是字符串本身中的字符;这是一个“太远”/深度的水平。

您可以使用二维列表理解。 int()正确地将“+”和“ - ”解释为正数和负数:

>>> y = [['+1', '-3', '-6', '-5'], ['+2', '-4']]
>>> [[int(d) for d in z] for z in y]
[[1, -3, -6, -5], [2, -4]]
>>> 

您也可以这样使用map

>>> y = [['+1', '-3', '-6', '-5'], ['+2', '-4']]
>>> [map(int,z) for z in y]
[[1, -3, -6, -5], [2, -4]]
>>> 

答案 1 :(得分:1)

def changy(n):
    return [[int(d) for d in z] for z in n]

print changy(x)    
[[1, 2, 3, 4, 5, 6]]

print changy(y)
[[1, -3, -6, -5], [2, -4]]

n =(嵌套列表)

以上评论帮助我意识到我正在迭代到我的列表中。

此函数帮助我将String嵌套列表更改为Integer嵌套列表。