実現したいこと
タイトルの通りですが、map関数を使用して2次元配列の要素を新しい値に置き換えたいです。for文で書き直した場合はうまくいくのですが、同じ内容をmap関数で実行するとうまく機能しません。
使用したコード
python
1def demofunc(a,b,c): 2 global u_test 3 u_test[a,b]=c 4 return u_test 5 6alist=[0,0,0,1,1,1,2,2,2] 7blist=[0,1,2,0,1,2,0,1,2] 8clist=np.arange(9) 9u_test = np.zeros((3,3)) 10map(demofunc,alist,blist,clist)
関数demofuncは2次元配列u_testに対して第1,2引数で指定したインデックスの値を第3引数の値に置き換えます。
map関数でdemofuncに対して引数のリストを与えて処理させました。
期待した結果としては、すべて要素が0の状態のu_testの初期状態から1-8までの値に置き換えられた状態になることを期待していました。
しかし、実行してもu_testは要素がすべて0の状態から変化していませんでした。
これまで試した内容
同様の内容のコードをfor文を使用して実行しました。
python
1def demofunc(a,b,c): 2 global u_test 3 u_test[a,b]=c 4 return u_test 5 6alist=[0,0,0,1,1,1,2,2,2] 7blist=[0,1,2,0,1,2,0,1,2] 8clist=np.arange(9) 9u_test = np.zeros((3,3)) 10 11for i in range(len(clist)): 12 demofunc(alist[i],blist[i],clist[i])
こちらのコードでは期待通りの結果(すべて0の状態->1-8までの数字に置き換わった2次元配列)が得られました。このことから、少なくとも関数demofuncの作り方は問題ないと考えています。
どなたかmap関数がうまく機能しない原因が分かる方がいましたら、教えてください。
よろしくお願いいたします。

回答1件
あなたの回答
tips
プレビュー