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

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

新規登録して質問してみよう
ただいま回答率
85.35%
多次元配列

1次元配列内にさらに配列を格納している配列を、多次元配列と呼びます。

Python

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

1回答

2760閲覧

Pythonで二次元配列の指定の位置へ一次元配列を代入したい

mamebean

総合スコア1

多次元配列

1次元配列内にさらに配列を格納している配列を、多次元配列と呼びます。

Python

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2021/04/02 09:36

前提・実現したいこと

Pythonにおいて

二次元配列の指定の位置([0],[1])に すでに値が入っている一次元配列(要素数、43)を代入したいです。
二次元配列[0]=一次元配列 としたいです。
(リストを、二次元配列の指定の要素にそのまま代入したい。)

while文内での使用です。

・二次元配列: [[],[]] 
→使用するのは[0]or[1]のみ。
一次元配列を代入するまでは使用していない。

・一次元配列: ['文字列','文字列','文字列',........]
→要素数43

調べ方が悪いのか、[0][1]のような要素の置換方法しかヒットせず
リストごと配列に代入(置換?)する方法がわかりませんでした。
よろしくお願いいたします。

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

二次元配列[0]=一次元配列 としたいが、
insert などを試してprintで確認しても、代入されていない。
while文での使用のため、appendは連結されて代入されてしまうため不可

エラーメッセージ

特にエラーは出ない

#Python
//二次元配列[[要素数43],[要素数43]] を定義
list2=[['' for i in range(43)] for j in range(2)]

while文内↓
//要素数43の一次元配列(これは定義できている
list1=['文字列','文字列','文字列',........] 

//代入失敗
list2[0]=shiftframes
//代入失敗
np.insert(self.shift,0,shiftframes)

### 試したこと insert などを試してprintで確認しても、代入されていない。 while文での使用のため、appendは連結されて代入されてしまうため不可 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答1

0

ベストアンサー

普通にやれば良いのではないでしょうか。

python

1>>> list2=[['' for i in range(43)] for j in range(2)] 2>>> list1 = ['a' for i in range(43)] 3>>> list2[0] = list1 4>>> print(list2) 5[['a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a'], ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '']]

これで何が問題なのですか。

投稿2021/04/02 10:00

ppaul

総合スコア24670

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

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

mamebean

2021/04/02 10:22

ありがとうございます。解決できました。ベストアンサーとさせていただきます。
mamebean

2021/04/02 13:39

再び質問失礼いたします。 さきほどの質問のような文字列での代入は出来たのですが、 list1 が byte型の配列の場合に list2[0]に代入すると、エラーが出てしまいます。 エラー内容(UnicodeDecodeError: 'ascii' codec can't decode byte 0xe3 in position 0: ordinal not in range(128))で調べ、解決策に上がっていたencode、decode、設定ファイルの書き換えなど試したのですが、うまくいかず 対処法がありましたらお聞きしたいです。 例:list1=['x03\x00\x02\x00\x03\x00\x04\x00\x01\x00\x01\x00\x04.......','.......', ........]  長さ(lenでprintした結果)が 43  これを list2[0]に代入したいです。
ppaul

2021/04/02 13:49

エラーメッセージの全文を載せてください。 それを見ないとなんとも判断できません。
mamebean

2021/04/02 14:02

Exception in thread Thread-1: Traceback (most recent call last): File "/Users/*****i/.pyenv/versions/3.7.5/lib/python3.7/threading.py", line 926, in _bootstrap_inner self.run() File "/Users/****/.pyenv/versions/3.7.5/lib/python3.7/threading.py", line 870, in run self._target(*self._args, **self._kwargs) File "system4.py", line 752, in bunri list2[0]=list1 UnicodeDecodeError: 'ascii' codec can't decode byte 0xa8 in position 0: ordinal not in range(128) こちらになります。 printでlist1を表示すると、 ['x03\x00\x02\x00\x03\x00\x04\x00\x01\x00\x01\x00\x04.......','.......', ........]   のようになっており、 len(list1)を確認しても 43 と表示されます。 そのため、先ほど教えていただいた手順でlist2に代入を行ったのですが このようなエラーがでてしまいました。
mamebean

2021/04/03 05:17

教えていただきありがとうございます。そちらについても試してみたところ、うまくいきませんでした。 もう一度内容を付け足して全体に質問してみます。 いろいろ親切にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問