流れる空の中で数学を。

とある数学好きの「手作りすうがく」と「気ままな雑記」。

【Python】二重ループが一部同期するバグ【バグ】

n×n行列の配列を

A=[[0]*n]*n

で初期化した後、

for i in range(n):

    for j in range(n):

          A[i][j]=(i,j)

等で、値を代入すると、A=[[(n,0),(n,1),…],[(n,0),(n,1),…],…]となるバグが発生した。

解決策は、

import numpy as np

A=np.zeros((n,n))

とした後、同じようにループを作ればいい。内包表記が複雑になり過ぎる場合、for文を使わざるをえないので、このようなバグには注意しましょう。