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

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

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

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

Q&A

解決済

1回答

249閲覧

python 足し算した結果をlistに代入したい

yu_89

総合スコア34

Python

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

0グッド

0クリップ

投稿2022/05/16 08:45

解決したいこと

pythonでdata[]から取り出した値を要素ごとに足し合わせてresultr[]に格納するようなプログラムを書いているのですが、"TypeError: 'int' object is not subscriptable"というエラーが出て上手くいきません。
何が原因なのでしょうか。

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

1.0 2.0 Traceback (most recent call last): File "num.py", line 20, in <module> resultr[i] += in_fftr TypeError: 'int' object is not subscriptable

該当のgnuradioのソースコード

num.py

1import numpy as np 2import cmath 3 4data = [1+2j, 2+3j, 3+4j, 4+5j, 5+6j, 6+7j, 7+8j, 8+9j, 9+10j] 5 6in_fftr = [] 7in_ffti = [] 8resultr = [] 9 10resultr = 0 11 12for j in range(3): 13 for i in range(3): 14 15 in_fftr = data[i].real 16 in_ffti = data[i].imag 17 print(in_fftr, in_ffti) 18 19 resultr[i] += in_fftr 20 print(resultr)

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

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

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

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

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

melian

2022/05/16 08:58

resultr = 0 としていますので、resultr が int 型になっています。
yu_89

2022/05/16 09:29

ご回答いただき、ありがとうございます。 resultr = 0.0、result = 0+0jとしても同じエラーが出るのですが、、、
melian

2022/05/16 09:31

resultr = [0.0] として下さい。
melian

2022/05/16 09:34

それと、 resultr[i] += in_fftr は、 resultr += [in_fftr] とする必要があります。もしくは result.append(in_fftr)
yu_89

2022/05/16 10:05

ありがとうございます。 ちなみに、print(in_fftr, in_ffti)を表示すると 1.0 2.0 2.0 3.0 3.0 4.0 1.0 2.0 2.0 3.0 3.0 4.0 1.0 2.0 2.0 3.0 3.0 4.0 となるのですが、これの実数部分を要素ごとに足した合計値をresultr[]の各要素に代入する、つまり、 resultr[0] = 1.0 + 1.0 + 1.0 resultr[1] = 2.0 + 2.0 + 2.0 resultr[2] = 3.0 + 3.0 + 3.0 にはどのようにすれば良いでしょうか?
guest

回答1

0

ベストアンサー

結果を入れる変数について、「resultr = 0」と初期化しているのに、「resultr[i] += in_fftr」のように配列のように扱っているのが原因です。

またpythonの配列は、「resultr[i] += in_fftr」このようにいきなり添字を指定して値を入れることはできません。

式のように積算したいのであれば、「resultr += in_fftr」こうすればいいし、リストにしたいのであれば、「resultr.append( in_fftr )」とすればいいかと思います。

(途中まで書いて質問欄を見た)
部分的に積算したいようですが、「要素ごと」とはどういう意味でしょう?

投稿2022/05/16 10:26

TakaiY

総合スコア12779

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

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

yu_89

2022/05/17 03:52

ご回答いただき、ありがとうございます。 返信が遅れていまい、申し訳ございません。 要素ごとといいますか、 1.0 2.0 3.0 1.0 2.0 3.0 1.0 2.0 3.0 と繰り返したものを resultr[0] = 1.0 + 1.0 + 1.0 resultr[1] = 2.0 + 2.0 + 2.0 resultr[2] = 3.0 + 3.0 + 3.0 という感じでresultr[]の各要素に代入したいのですが、 pythonではこれをどういうふうにすれば出来るのかなと悩んでおりまして。
TakaiY

2022/05/17 05:46

「と繰り返したもの」とありますが、繰り返しているかどうかを判定するのは難しいでしょう。 3つずつなど、別途どこかで定義する必要があります。
yu_89

2022/05/17 07:46

ありがとうございます。 ちょっとやってみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問