Python備忘録 多次元リストのデータ格納(置換)に関するプチ不思議(2022年11月)
ある計算コードを作っているときに遭遇したPythonのプチ不思議です。 例えば、入力が全てゼロの3×3の2次元のリストが既に存在するとします。 num_list = [[0, 0, 0], \ [0, 0, 0], \ [0, 0, 0]] 以下のコードで前述の'num_list'を作成できますよね。 num_list = [] list_factor = [ 0 , 0 , 0 ] for i in range ( 0 , 3 ): num_list.append ( list_factor ) num_listを出力します。 print ( "Initial num_list" ) print ( num_list ) 出力は以下のとおりです。 【出力】 Initial num_list [[0, 0, 0], [0, 0, 0], [0, 0, 0]] これを以下のようなリストに置き換えたいとします。 num_list = [[1, 2, 3], \ [4, 5, 6], \ [7, 8, 9]] このとき、FORTRANプログラミングの経験がある拙者としては、以下のようなPythonコードを組んでしまいます。 n = 1 for i in range ( 0 , 3 ): for j in range ( 0 , 3 ): num_list [ i ][ j ] = n n += 1 置換後のnum_listを出力すると、 print ( "Final num_list" ) print ( num_list ) 【出力】 Final num_list [[7, 8, 9], [7, 8, 9], [7, 8, 9]] となり、なぜか、 num_list = [[7, 8, 9], \ [7, 8, 9], \ [7, 8, 9]] という2次元リストになってしまいます。 ちょっと途中経過を表示してみます。 n = 1 for i in range ( 0 , 3 ): for j in r