我有这个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之类的标志, 我该怎么办?
答案 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]]