在Python中将矩阵元素从str转换为int

在Python中将矩阵元素从str转换为int,python,scripting,Python,Scripting,我需要将矩阵的元素从str转换为int(在我从文件中读取它们之后)。 我不想使用任何外部库 这是我到目前为止制作的,它正在工作,但我对它不满意(不是很像蟒蛇): def str2int(矩阵): n=1 m=1 如果类型(矩阵)为ListType: n=len(矩阵) 如果类型(矩阵[0])是ListType: m=len(矩阵[0]) 新矩阵=[] i=0 而i

我需要将矩阵的元素从str转换为int(在我从文件中读取它们之后)。 我不想使用任何外部库

这是我到目前为止制作的,它正在工作,但我对它不满意(不是很像蟒蛇):

def str2int(矩阵):
n=1
m=1
如果类型(矩阵)为ListType:
n=len(矩阵)
如果类型(矩阵[0])是ListType:
m=len(矩阵[0])
新矩阵=[]
i=0
而i
还有更好的主意吗

谢谢。

使用:

使用:


在Python中,类型检查是一种不好的方法,如果要进行类型检查,至少要使用
isinstance()
over
Type(x)is SomeType
。同样,按索引进行迭代是一个非常糟糕的主意。在Python中,类型检查是一种糟糕的方法,如果要进行类型检查,至少要使用
isinstance()
over
Type(x)is SomeType
。同样,按索引进行迭代是一个非常糟糕的主意。也可以使用
map
进行内部理解:
return[map(int,row)for row in matrix]
这就是我想要的。非常感谢(也感谢教程)。@lxop:我在那里也使用了列表comp,因为Python 3的
map()
返回一个生成器,而不是列表;列表comp可以跨版本工作。我明白了。我还没有进入Python3,所以很高兴知道,我还可以使用
map
进行内部理解:
return[map(int,row)for row in matrix]
这就是我想要的。非常感谢(也感谢教程)。@lxop:我在那里也使用了列表comp,因为Python 3的
map()
返回一个生成器,而不是列表;列表comp可以跨版本工作。我明白了。我还没有进入Python 3,所以很高兴知道这一点
def str2int(matrix):
    n = 1 
    m = 1 
    if type(matrix) is ListType:
        n = len(matrix)
        if type(matrix[0]) is ListType:
            m = len(matrix[0])
    new_matrix = []
    i = 0 
    while i < n:
        new_matrix.append([])
        j = 0 
        while j < m:
            new_matrix[i].append(int(matrix[i][j]))
            j += 1
        i += 1
    return new_matrix
return [[int(i) for i in row] for row in matrix]