投稿

11月, 2022の投稿を表示しています

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