前提・実現したいこと
あるリストの前から2要素分を,元のリストの頭部分に連結させた新たなリストを作成したいです.
ただし,その2要素以外は,下記コード後半のfor文によってランダムに指定された箇所の0,1が反転されます.
頭に連結させた2要素は元の要素内容のまま連結させたいのですが,現状ではその2要素も反転された結果で出力されてしまいます.
同じリストを違う変数でもう一つ定義すれば回避できましたが,元のリストは1つのままで解決する方法が知りたいです.
下記コードで,前から2要素 "l3"を,元のリスト "l2"から参照しているためだと思うのですが・・・.
解決法がわかる方がいらっしゃれば.ご教授いただきたいです.
出力して欲しい結果
下記コードの"l4"が結果
現状:[[1, 0, 0, 1, 0, 1], [1, 1, 1, 0, 0, 0], [1, 0, 0, 1, 0, 1], [1, 1, 1, 0, 0, 0], [0, 0, 1, 1, 1, 0], [0, 0, 1, 0, 0, 0], [0, 0, 1, 1, 1, 0], [0, 0, 0, 0, 0, 1]]
希望の結果:[[1, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 0], [1, 0, 0, 1, 0, 1], [1, 1, 1, 0, 0, 0], [0, 0, 1, 1, 1, 0], [0, 0, 1, 0, 0, 0], [0, 0, 1, 1, 1, 0], [0, 0, 0, 0, 0, 1]]
該当のソースコード
python3
1import random 2 3random.seed(0) 4 5list1 = [] 6l1 = [0,1,2,3,4,5] 7 8for i in range(5): 9 test = sorted(random.sample(l1,2)) 10 list1.append(test) 11 12list2 = [] 13l2 = [[1,0,0,0,0,0],[0,1,0,0,0,0],[0,0,1,0,0,0],[0,0,0,1,0,0],[0,0,0,0,1,0],[0,0,0,0,0,1]] 14l3 = l2[:2] 15 16for j in range(5): 17 for k in list1[j]: 18 if (l2[j])[k] == 1: 19 (l2[j])[k] = 0 20 else: 21 (l2[j])[k] = 1 22l4 = l3 + l2 23print("l4", l4)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/15 13:40