Mnożenie macierzy za pomocą list składanych

0

Witam mam taki mały problem z mnożenie macierzy.
Czy da się zapisać za pomocą list comprehension
mnożenie macierzy bez używania funkcji zip() , oraz sum().
W funkcji matlc_4 niestety nie działa to poprawnie.

def matmul_for(a,b,rows_cols):
    res1 = [[0]*rows_cols for i in range(rows_cols)]
    for i in range(rows_cols):
        for j in range(rows_cols):
            for k in range(rows_cols):
                res1[i][j]= res1[i][j]+a[i][k]*b[k][j]
    return res1
 
def matlc(a,b,rows_cols):
    return  [[sum(a[i][k]*b[k][j] 
            for k in range(rows_cols) ) 
            for j in range(rows_cols)] 
            for i in range(rows_cols)]
 
def matlc_4(a,b,rows_cols):
    res3 = [[0]*rows_cols for i in range(rows_cols)]
    return    [[ res3[i][j] +a[i][k]*b[k][j]
            for i in range(rows_cols)
                for j in range(rows_cols)]
                    for k in range(rows_cols)]
 
 
 
 
rows_cols =3
a=[[1,2,3],
    [4,2,4],
    [6,4,2]]
 
b=[[3,0,9],
    [4,7,6],
    [2,1,5]]
 
print("MACIERZE")
print(a)
print(b)
print('')
 
print('matmul_for(a,b,rows_cols):')
m1=matmul_for(a,b,rows_cols)
print(m1)
print('')
 
print('matlc(a,b,rows_cols)')
m2=matlc(a,b,rows_cols)
print(m2)
print('')
 
print('matlc_4(a,b,rows_cols):')
m3=matlc_4(a,b,rows_cols)
print(m3)
print('')```
1

I tak Masz trzy pętle w tej funkcji, to jaki zysk z list comprehension?

0

Po prostu przy nauce chciałem się dowiedzieć jak to przekonwerterować
z jednej formy w drugą.

0

A robisz jakiś konkretny projekt? Moze uda się to inaczej zastąpić.
pozdrawiam Kamil

1 użytkowników online, w tym zalogowanych: 0, gości: 1