2017-11-11 20 views
-1

ここで、のgame_listの各変更をgame_list_bkpにバックアップしようとしています。 whileループで起こっている各変更をgame_list_bkpに追加できることを期待していました。ループが4回実行されると、同じリストがgame_list_bkpに追加されます。私は[[3, 7, 8, 6], [3, 7, 8, 6], [3, 7, 8, 6], [3, 7, 8, 6]]のような結果を取得していますが、私は[[3], [3, 7], [3, 7, 8], [3, 7, 8, 6]]Pythonでwhileループでリストを追加すると問題が発生する

import random 
val = True 
game_list = [] 
game_list_bkp = [] 
usr_input = 1 
while usr_input <5: 
     if usr_input >0: 
       game_list.append(random.randint(1,9)) 
       game_list_bkp.append(game_list) 
       print (game_list_bkp) 
     if usr_input !=0: 
       usr_input = int(input("Enter:")) 
     else: 
       val=False 

結果のようになる必要がある

[[3]]

入力します:1

[[3]、[7]、[ 3,7]]

入力:1

[[3、7、8]、[3、7、8]、[3、7、8]

入力:1

[[3、7、8、6]、[ [3,7,8,6]、[3,7,8,6]、[3,7,8,6]

+1

では動作しませんgame_list[:]を追加することによってそれを行うことができます - あなたは、一度にそれのコピーを作成する必要があります(使用list.copy()またはそれのようになめらか) - https://stackoverflow.com/questions/2612802/how-to-clone-or-copy-a-list –

答えて

1

毎回game_listのコピーを追加する必要があります。あなたはgame_listに参照を追加bcの代わりにgame_list

import random 

val = True 
game_list = [] 
game_list_bkp = [] 
usr_input = 1 
while usr_input < 5: 
    if usr_input > 0: 
     game_list.append(random.randint(1, 9)) 
     game_list_bkp.append(game_list[:]) 
     print (game_list_bkp) 
    if usr_input != 0: 
     usr_input = int(input("Enter:")) 
    else: 
     val = False 
+0

Thnak you Wodinを参照してください! –

関連する問題