質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

24525閲覧

2次元配列のfor文での操作

退会済みユーザー

退会済みユーザー

総合スコア0

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2019/05/30 08:21

ゼロ埋めした2次元配列の1行目,1列目にあたる要素のみを1に置き換えたいのですが、上手くいきません。
同じfor文を回す2つ目のコードの結果のようになると思っていたのですが、なぜか全ての要素が変わってしまいます。
どうすればよいのでしょうか?

Python

1arr = [[0] * 3] * 3 2l = 3 3for i in range(l): 4 arr[0][i] = 1 5 arr[i][0] = 1 6for i in arr: 7 print(i) 8 9> [1, 1, 1] 10> [1, 1, 1] 11> [1, 1, 1]

Python

1arr = ([10, 11, 12], [20, 21, 22], [30, 31, 32]) 2l = 3 3for i in range(l): 4 print(i, arr[0][i]) 5 arr[0][i] = 0 6 arr[i][0] = 0 7for i in arr: 8 print(i) 9 10> [1, 1, 1] 11> [1, 21, 22] 12> [1, 31, 32]

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

python

1arr = [[0] * 3] * 3

上記の生成では、同じオブジェクトとして生成されてしまうことが原因のようです。

python

1arr = [[0]*3]*3 2for i in range(3): 3 print(id(arr[i])) 4 5> 4421177224 6> 4421177224 7> 4421177224

そもそもの生成方法を変えてみてください。

python

1arr = [[0]*3 for i in range(3)] #例えば、内包表記 2for i in range(3): 3 print(id(arr[i])) 4 5> 4527816648 6> 4527006408 7> 4527006536

投稿2019/05/30 08:49

yusuraume

総合スコア34

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

最初の多次元配列の作り方がまずいです。
同じ参照先になっているからです。

python

1arr = [[0] * 3 for i in range(3)]

これにかえてください。

Python における list の本質と 二次元配列 ( 多次元配列 ) のお話。
こことがが参考になりそうです。

投稿2019/05/30 08:48

編集2019/05/30 08:50
waku_nagoya

総合スコア200

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問