2016-10-05 7 views
0

私はPythonを使用しています。割り当てはシンプルですが、私はコンセプトを理解しています。コンピュータプログラミングに関する知識は全くありませんので、やさしく説明してください。私は何も知らないかのようにすべてを説明してください。これは、ijk、ikj、jik、jki、kij、およびkjiのすべての組み合わせで同じ結果が返されることを示しています。次のステップは4000で同じことをすることです(4000をマトリックスに入れて自分自身を撃つ方法を試してみてください) numpyのようなものがあることは知っていますが、どのように使用するのかはわかりませんが、 Windows端末からまっすぐに、基本を試してみてください。私はあなたの時間のためにあなたに感謝し、みんなここで助けたい!第三セットのコードを実行するときに感謝!!!ここにコードネストループすべて

enter code here 

    X = [[1,2,3,4,5], 
     [6,7,8,9,10]] 



    Y = [[1,2], 
     [3,4], 
     [5,6], 
     [7,8], 
     [9,10]] 



    result = [[0,0], 
      [0,0]] 
    empty = [[0,0], 
      [0,0]] 

     for i in range(len(X)): 
      for j in range(len(Y[0])): 
        for k in range(len(Y)): 
         result[i][j] += X[i][k] * Y[k][j] 
for r in result: 
    print r 
    result = empty 
    del r[:] 


print"" 

for i in range(len(X)): 
    for k in range(len(Y)): 
     for j in range(len(Y[0])): 
      result[i][j] += X[i][k] * Y[k][j] 

for r in result: 
    print r 
    del r[:] 


print"" 

for i in range(len(X)): 
    for k in range(len(Y)): 
     for j in range(len(Y[0])): 
      result[i][j] += X[i][k] * Y[k][j] 

for r in result: 
    print r 
    result = empty 
    del r[:] 
    del range[:] 

print"" 

for j in range(len(Y[0])):  
    for i in range(len(X)): 
     for k in range(len(Y)): 
      result[i][j] += X[i][k] * Y[k][j] 

for r in result: 
    print r 
    result = empty 
    del r[:] 

for j in range(len(Y[0])): 
    for k in range(len(Y)): 
     for i in range(len(X)): 
      result[i][j] += X[i][k] * Y[k][j] 

for r in result: 
    print r 
    result = empty 
    del r[:] 

for k in range(len(Y)): 
    for i in range(len(X)): 
     for j in range(len(Y[0])): 
      result[i][j] += X[i][k] * Y[k][j] 

for r in result: 
    print r 
    result = empty 
    del r[:] 

for k in range(len(Y)): 
    for j in range(len(Y[0])): 
     for i in range(len(X)): 
      result[i][j] += X[i][k] * Y[k][j] 

for r in result: 
    print r 
    result = empty 
    del r[:] 

問題を入力して、インデックスで、インデックスに問題がある、私はそれを把握することはできません。

  result[i][j] += X[i][k] * Y[k][j] 
     IndexError: list index out of range 
+1

Welcome to Stackoverflow!一般的に質問を投稿するときは、MCVEのサンプル(http://stackoverflow.com/help/mcve)に固執して、長いコードブロックを読む必要はありません。これは間違いなく、タイムラインと受け取った回答の質に役立ちます –

+0

'i'、' j'などの代わりに 'row'、' col'などの名前を使用する方が簡単です – furas

+0

'i'、第3のセットでは、どの要素が問題になるかを見るために、「j」、「k」、「result [i] [j]」、「X [i] [k]」、「Y [k] – furas

答えて

0
for i in range(len(X)): 
    for k in range(len(Y)): 
     for j in range(len(Y[0])): 
      result[i][j] += X[i][k] * Y[k][j] 

result[i][j]len(X)len(Y)の両方2ある2x2行列です。その間にkはすべて5まで進んでいます。これは、あなたのlist index out of rangeエラーを与えるものです

あなたはあなたの行列のサイズを一致させる必要があります。

+0

ijkを簡単に切り替えることができるように、この機能を実現するためにコードをどのように変更すればよいでしょうか。 – Khalil

0

私は第三セットでijkresult[i][j]X[i][k]Y[k][j]を印刷した:

あなたはresult = empty

を忘れてしまった。しかし、別の問題がある:result = emptyリストを複製するが、同じを割り当てていません2つの変数にリストする。したがって、r[:]を削除すると、resultemptyが削除され、空のリスト[]が得られ、result[0][0]も存在しません。

emptyを複製してresultに割り当てるには、result = empty[:]が必要です。

X = [[1,2,3,4,5], 
    [6,7,8,9,10]] 

Y = [[1,2], 
    [3,4], 
    [5,6], 
    [7,8], 
    [9,10]] 

result = [[0,0], 
     [0,0]] 

empty = [[0,0], 
     [0,0]] 


for i in range(len(X)): 
    for j in range(len(Y[0])): 
      for k in range(len(Y)): 
       result[i][j] += X[i][k] * Y[k][j] 

for r in result: 
    print r 
print 

result = empty[:] 

for i in range(len(X)): 
    for k in range(len(Y)): 
     for j in range(len(Y[0])): 
      result[i][j] += X[i][k] * Y[k][j] 

for r in result: 
    print r 
print 

result = empty[:] 

for i in range(len(X)): 
    for k in range(len(Y)): 
     for j in range(len(Y[0])): 
      result[i][j] += X[i][k] * Y[k][j] 

for r in result: 
    print r 
print 

result = empty[:] 

for j in range(len(Y[0])):  
    for i in range(len(X)): 
     for k in range(len(Y)): 
      result[i][j] += X[i][k] * Y[k][j] 

for r in result: 
    print r 
print 

result = empty[:] 

for j in range(len(Y[0])): 
    for k in range(len(Y)): 
     for i in range(len(X)): 
      result[i][j] += X[i][k] * Y[k][j] 

for r in result: 
    print r 
print 

result = empty[:] 

for k in range(len(Y)): 
    for i in range(len(X)): 
     for j in range(len(Y[0])): 
      result[i][j] += X[i][k] * Y[k][j] 

for r in result: 
    print r 
print 

result = empty[:] 

for k in range(len(Y)): 
    for j in range(len(Y[0])): 
     for i in range(len(X)): 
      result[i][j] += X[i][k] * Y[k][j] 

for r in result: 
    print r 
print 

result = empty[:] 
+0

私はresult = empty_list []を理解しています:] – Khalil