🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python 3.x

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

Q&A

解決済

3回答

1333閲覧

[python]多次元配リストへの値の代入方法について

koppa

総合スコア1

Python 3.x

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

0グッド

0クリップ

投稿2021/03/13 06:33

前提・実現したいこと

Python3.9.2でGoogleスプレッドシートから文字を読み取り、リストに格納するプログラムを作成しております。

スプレッドシートには
a1 a2 a3 ××
b1 b2 b3 ××
c1 c2 c3 ××
d1 d2 d3 ××

と文字列が並んでおります。

それを1つ1つ読み取り、リストに代入することで、このような多次元配列の文字列のデータセットにしたいと考えております。
[["a1", "b1", "c1", "d1", "・・"], ["a2", "b2", "c2", "d2", "・・"], ・・["ax", "bx", "・・]]

発生している問題・エラーメッセージ

ここで、多次元配列のリストに文字列を格納するやり方がわからず、手が止まってしまいました。。。

例えば3次元配列で値0で初期化されているlist_testに対して、以下のことを試しております。

(1) append() → 全ての要素の末尾に追加されてしまう
list_test[0].append("a1")

とすると、[[0, 0, 0, 'a1'], [0, 0, 0, 'a1'], [0, 0, 0, 'a1']]となってしまいます。
実現したいのは[['a1', 0, 0],[0,0,0],[0,0,0]]なのです。。。

なお、list_test.append("a1")としても、[[0, 0, 0], [0, 0, 0], [0, 0, 0], 'a1']となるため、これは実現したい形ではありません。

(2) insert()も同様でNG

(3) 直接代入も同様でNG
list_test[0][0] = "a1" とすると
[['a1', 0, 0], ['a1', 0, 0], ['a1', 0, 0]] となってしまいます。。

a1を[0][0]、a2を[0][1]、b1を[1][0]、・・・のようにリストへ代入していくにはどのようにしたらよいものでしょうか?

Webでググっても、appendやinsertの基本的な使い方ばかりで、多次元配列のこうした扱いが見つからずこちらでご質問をさせていただきます。

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

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

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

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

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

guest

回答3

0

投稿2021/03/13 09:27

ppaul

総合スコア24670

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

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

koppa

2021/03/13 20:50

ご回答ありがとうございました!拝見しまして、よく理解できました。 teratail内ももっと調べた方が良いですね。大変ありがとうございました。
guest

0

ベストアンサー

Python

1list_test=[['']*5 for i in range(4)] 2list_test[0][0]='a1' 3print(list_test)

とか

投稿2021/03/13 06:56

modieu

総合スコア282

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

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

koppa

2021/03/13 20:49

迅速にご回答いただきありがとうございました! こちらのアンサーが今回一番やりたかったことをすぐに実現できましたので、ベストアンサーにさせていただきました!またどうぞよろしくお願い申し上げます。
guest

0

(3) 直接代入も同様でNG

list_test[0][0] = "a1" とすると
[['a1', 0, 0], ['a1', 0, 0], ['a1', 0, 0]] となってしまいます。。

と記載されていますが、これで正しいと思います。
正しく動作しない理由はlist_testの作り方の問題でしょう。

python

1list_test=[] 2row=[0,0,0] 3list_test.append(row) 4list_test.append(row) 5list_test.append(row) 6 7# こちらはNG 8 9list_test=[] 10list_test.append([0,0,0]) 11list_test.append([0,0,0]) 12list_test.append([0,0,0]) 13 14# こちらはOK 15

投稿2021/03/13 06:45

編集2021/03/13 06:47
xail2222

総合スコア1508

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

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

koppa

2021/03/13 20:48

迅速に回答いただき誠にありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問