在for循环中将字符串转换为int

时间:2019-03-06 07:45:38

标签: python for-loop casting

我正在尝试将字符串矩阵转换为整数矩阵, 例如我有Matrix=[['1','2']['3','4']]

我之所以使用split,是因为Matrix是一个内部带有空格的输入,我仅举了一个例子。

我正在这样做:

for arr in Matrix:
     arr=arr.split()
     arr=[map(lambda x:int(x),arr)]

由于某些原因,矩阵保持不变,我是否缺少某些东西?

编辑这是我的可执行代码:

Matrix=[];
while True:
     try:
          arrInput=input('enter');
          Matrix.append(arrInput)
     except (KeyboardInterrupt,EOFError):
          print('done');
          break;
for arr in Matrix:
     arr=arr.split()

2 个答案:

答案 0 :(得分:3)

您的Matrix语法无效,应该是:

Matrix=[['1','2'],['3','4']]

使用list comprehension

Matrix=[['1','2'],['3','4']]    
print([[int(x) for x in lst] for lst in Matrix])

OR

(如果您希望map像这样):

print([list(map(int, lst)) for lst in Matrix])

输出

[[1, 2], [3, 4]]

pyFiddle

编辑:

OP:问题是我不希望将其打印出来,所以当我删除打印件时,会出现此错误。

如果您不想打印它,可以分配它:

res = [list(map(int, lst)) for lst in Matrix]

答案 1 :(得分:1)

使用numpypip install numpy)进行尝试:

import numpy as np
matrix = [['1', '2'], ['3', '4']]
result = np.array(matrix, dtype=int)
print(result.tolist())
# [[1, 2], [3, 4]]