如何查看int转换期间是否不是int

时间:2019-03-19 23:15:27

标签: python exception casting

我有这个Matrix=[['1', '2', '3'], ['4', 'a', 'n']]

我正在这样做:

Matrix=[arr.split() for arr in Matrix]
Matrix=[list(map(int, arr)) for arr in Matrix]

如您所见,我在矩阵中每次有一个char时,都想停止该过程并举起con = false之类的标志, 我该怎么办?

2 个答案:

答案 0 :(得分:2)

一种解决方案是声明一个“更好的”强制转换函数,然后在int中调用它而不是map

matrix = [['1', '2', '3'], ['4', 'a', 'n']]

def int_with_default(value, default="NaN"):
    try: 
        return int(value)
    except ValueError: 
        return default

matrix = [list(map(int_with_default, arr)) for arr in matrix]

输出矩阵将为[[1, 2, 3], [4, 'NaN', 'NaN']]。请注意,您也可以使用math.nan代替我作为示例使用的此任意字符串。

答案 1 :(得分:0)

如果只有正整数,则可以使用以下listcomp:

m = [['1', '2', '3'], ['4', 'a', 'n']]

[list(map(lambda x: int(x) if x.isdigit() else None, row)) for row in m]
# [[1, 2, 3], [4, None, None]]