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()的无效文字:' +'
感谢任何帮助
答案 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嵌套列表。