(self, a, b)
return c
:type A: List[List[int]]
    :type B: List[List[int]]
    :rtype: List[List[int]]
:type A: List[List[int]]
    :type B: List[List[int]]
    :rtype: List[List[int]]
: type A : List [ List [ int ]] : type B : List [ List [ int ]] : rtype : List [ List [ int ]]
def multiply(self, a, b):
    """
    :type A: List[List[int]]
    :type B: List[List[int]]
    :rtype: List[List[int]]
    """
    if a is None or b is None: return None
    m, n = len(a), len(b[0])
    if len(b) != n:
        raise Exception("A's column number must be equal to B's row number.")
    l = len(b[0])
    table_a, table_b = {}, {}
    for i, row in enumerate(a):
        for j, ele in enumerate(row):
            if ele:
                if i not in table_a: table_a[i] = {}
                table_a[i][j] = ele
    for i, row in enumerate(b):
        for j, ele in enumerate(row):
            if ele:
                if i not in table_b: table_b[i] = {}
                table_b[i][j] = ele
    c = [[0 for j in range(l)] for i in range(m)]
    for i in table_a:
        for k in table_a[i]:
            if k not in table_b: continue
            for j in table_b[k]:
                c[i][j] += table_a[i][k] * table_b[k][j]
    return c
def multiply ( self , a , b ) : if a is None or b is None : return None m , n = len ( a ) , len ( b [ 0 ] ) if len ( b ) != n : raise Exception ( "A's column number must be equal to B's row number." ) l = len ( b [ 0 ] ) table_a , table_b = { } , { } for i , row in enumerate ( a ) : for j , ele in enumerate ( row ) : if ele : if i not in table_a : table_a [ i ] = { } table_a [ i ] [ j ] = ele for i , row in enumerate ( b ) : for j , ele in enumerate ( row ) : if ele : if i not in table_b : table_b [ i ] = { } table_b [ i ] [ j ] = ele c = [ [ 0 for j in range ( l ) ] for i in range ( m ) ] for i in table_a : for k in table_a [ i ] : if k not in table_b : continue for j in table_b [ k ] : c [ i ] [ j ] += table_a [ i ] [ k ] * table_b [ k ] [ j ] return c