練習問題_3_8(forの3重化 行列の積)
この問題のポイントは ABの要素となる 0x0 + 1×10 + 2×20 + 3×30 をどう処理するかです。このAの0行目とBの0列目の内積を計算するには複数の方法があるかと思います。以下そのうちの2つの方法を示します。
x = 0
for k in range(len(A[0])):
x += A[0][k] * B[k][0]
x
140
x = []
for k in range(len(A[0])):
x.append(A[0][k] * B[k][0])
sum(x)
140
- 戻り値となるABの初期値[]を設定します。
- Aの行数分の要素が必要なので最初に for i in range(len(A)) でfor文を作成します。
- 次にAの要素となる行を表すリスト rowの初期値[]を設定します。
- rowの長さはBの列数分なので for j in range(len(B[0])) でfor文を作成します。
- 4番のforの処理文として上記のどちらかを記載します。その際 A[0][k] * B[k][0]ではなく、Aの i行、Bのj列を表す A[i][k] * B[k][j] とします。
- 5番のループ処理後に rowに xまたは sum(x)をappendします。(上のコードを使用時は x 下のコード使用時は sum(x))
- 4番のループ処理後に ABにrowをappendします。
- 2番のループ処理後に ABをreturnします。