概要
Python3です。
リストで指定したインデックス以下に勝手に全て代入されてしまいます。
例えば li = [0,0,0,0,0] に対して li[2] = 1 とすると 結果が [1,1,1,0,0] となってしまうということです。
下記が問題のコードです。A_list[m] = copy_num の箇所が上記の例のようになってしまいます。
尚、未完のコードなので最後の方にエラーが出ますがそこは大丈夫です。。
コード
#coding:utf-8 num = [1,2,3,4,5] post_li = [] copy_num = num #[1,2,3,4,5] A_list = [0,0,0,0,0] m = 0 def jamaika(): global post_li global copy_num global A_list global m print('-------------') print(str(m)+"層") print("copy_num>>",end="") print(copy_num) print('m>>'+str(m)) A_list[m] = copy_num #問題のコード print("A_list>>",end="") print(A_list) for i in range(5-m): post_li.append(copy_num[i]) del copy_num[i] if m == 4: print("Last_post_li>>",end="") print(post_li) else: print("post_li>>",end="") print(post_li) m += 1 jamaika() m -= 1 jamaika()
実行結果
0層
copy_num>>[1, 2, 3, 4, 5]
m>>0
A_list>>[[1, 2, 3, 4, 5], 0, 0, 0, 0]
post_li>>[1]
1層
copy_num>>[2, 3, 4, 5]
m>>1
A_list>>[[2, 3, 4, 5], [2, 3, 4, 5], 0, 0, 0]
↑m>>1なので A_list[m] = copy_num は A_list[1] = copy_num となると思ったのですが何故か[0]まで代入されてしまいます。
post_li>>[1, 2]
2層
copy_num>>[3, 4, 5]
m>>2
A_list>>[[3, 4, 5], [3, 4, 5], [3, 4, 5], 0, 0]
※同様です。
post_li>>[1, 2, 3]
3層
copy_num>>[4, 5]
m>>3
A_list>>[[4, 5], [4, 5], [4, 5], [4, 5], 0]
※同様です。
post_li>>[1, 2, 3, 4]
4層
copy_num>>[5]
m>>4
A_list>>[[5], [5], [5], [5], [5]]
※同様です。
Last_post_li>>[1, 2, 3, 4, 5]
環境
関係あるか微妙ですが
OS:Windows8.1
エディタ:Eclipse NEON
検索や試行錯誤を繰り返したのですが解決に至らなかったのでここで質問させていただきます。
面倒な質問だと思われますがご教授よろしくおねがいします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/08/27 03:15