質問するログイン新規登録

回答編集履歴

4

回答の削除

2025/06/29 16:09

投稿

hiroki-o
hiroki-o

スコア1471

answer CHANGED
@@ -1,30 +1,1 @@
1
- Windows 11、Python 3.13.3で確認しました。
2
-
3
- ```
4
- for i in range(5):
5
- print(id(zenin[i]))
6
- ```
7
- を追加してみるとわかりますが、zeninの各要素は同じオブジェクトです。
8
- なので、1個書き換えると、全部書き換わります。
9
-
10
- 以下のように、一度に初期化するとよいです。
11
- ```
12
- zenin = [['No'] * 5 for i in range(5)]
13
- print(zenin)
14
- zenin[1][0]="1"
15
- print(zenin)
16
- ```
17
- 出力
18
- ```
19
- [['No', 'No', 'No', 'No', 'No'], ['No', 'No', 'No', 'No', 'No'], ['No', 'No', 'No', 'No', 'No'], ['No', 'No', 'No', 'No', 'No'], ['No', 'No', 'No', 'No', 'No']]
20
- [['No', 'No', 'No', 'No', 'No'], ['1', 'No', 'No', 'No', 'No'], ['No', 'No', 'No', 'No', 'No'], ['No', 'No', 'No', 'No', 'No'], ['No', 'No', 'No', 'No', 'No']]
21
- ```
22
-
23
- (追記)
24
- melianさんのコメントにあるdeepcopyですが、[:]だと、知らないとdeepとshallowのどちらか迷うので、
25
- ```
26
- import copy
27
- (中略)
28
- zenin.append(copy.deepcopy(t))
29
- ```
30
- のように明示的に書いたほうと思います。
1
+ 反応ので削除します。

3

回答の追記

2025/04/27 16:22

投稿

hiroki-o
hiroki-o

スコア1471

answer CHANGED
@@ -18,4 +18,13 @@
18
18
  ```
19
19
  [['No', 'No', 'No', 'No', 'No'], ['No', 'No', 'No', 'No', 'No'], ['No', 'No', 'No', 'No', 'No'], ['No', 'No', 'No', 'No', 'No'], ['No', 'No', 'No', 'No', 'No']]
20
20
  [['No', 'No', 'No', 'No', 'No'], ['1', 'No', 'No', 'No', 'No'], ['No', 'No', 'No', 'No', 'No'], ['No', 'No', 'No', 'No', 'No'], ['No', 'No', 'No', 'No', 'No']]
21
- ```
21
+ ```
22
+
23
+ (追記)
24
+ melianさんのコメントにあるdeepcopyですが、[:]だと、知らないとdeepとshallowのどちらか迷うので、
25
+ ```
26
+ import copy
27
+ (中略)
28
+ zenin.append(copy.deepcopy(t))
29
+ ```
30
+ のように明示的に書いたほうがよいと思います。

2

回答の修正の取り消し

2025/04/27 15:06

投稿

hiroki-o
hiroki-o

スコア1471

answer CHANGED
@@ -9,7 +9,6 @@
9
9
 
10
10
  以下のように、一度に初期化するとよいです。
11
11
  ```
12
- zenin=[]
13
12
  zenin = [['No'] * 5 for i in range(5)]
14
13
  print(zenin)
15
14
  zenin[1][0]="1"

1

回答の修正

2025/04/27 15:01

投稿

hiroki-o
hiroki-o

スコア1471

answer CHANGED
@@ -9,6 +9,7 @@
9
9
 
10
10
  以下のように、一度に初期化するとよいです。
11
11
  ```
12
+ zenin=[]
12
13
  zenin = [['No'] * 5 for i in range(5)]
13
14
  print(zenin)
14
15
  zenin[1][0]="1"