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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Visual Studio Code

Visual Studio Codeとは、Microsoft社が開発したマルチプラットフォーム対応のテキストエディタです。Visual Studioファミリーの一員でもあります。拡張性とカスタマイズ性が高く、テキストエディタでありながら、IDEと遜色ない機能を備えることができます。

Python 3.x

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

Python

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

Q&A

解決済

3回答

636閲覧

data_1とdata_2[0]~data_2[5]を掛け算して和を求めたいです。

退会済みユーザー

退会済みユーザー

総合スコア0

Visual Studio Code

Visual Studio Codeとは、Microsoft社が開発したマルチプラットフォーム対応のテキストエディタです。Visual Studioファミリーの一員でもあります。拡張性とカスタマイズ性が高く、テキストエディタでありながら、IDEと遜色ない機能を備えることができます。

Python 3.x

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

Python

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

0グッド

3クリップ

投稿2022/06/21 19:08

前提として
まず、以下のような二次元リストがあります。

python

1data_1 = [1, 2, 3] 2data_2 = [[-5, -1, -1], [3, 3, -1], [-3, -3, 6]]

実現したいこと
上手に説明できないのですが、上記のリストを用いて下記のような計算を行いたいです。

python

1data_1[0]*data_2[0][0] + data_1[0]*data_2[0][1] + data_1[0]*data_2[0][2] 2=1*(-5) + 1*(-1) + 1*(-1) = -7 3data_1[1]*data_2[0][0] + data_1[1]*data_2[0][1] + data_1[1]*data_2[0][2] 4=2*(-5) + 2*(-1) + 2*(-1) = -14 5data_1[2]*data_2[0][0] + data_1[2]*data_2[0][1] + data_1[2]*data_2[0][2] 6=3*(-5) + 3*(-1) + 3*(-1) = -21 7data_1[0]*data_2[1][0] + data_1[0]*data_2[1][1] + data_1[0]*data_2[1][2] 8=1*3 + 1*3 + 1*(-1) = 5 9data_1[1]*data_2[1][0] + data_1[1]*data_2[1][1] + data_1[1]*data_2[1][2] 10=2*3 + 2*3 + 2*(-1) = 10 11data_1[2]*data_2[1][0] + data_1[2]*data_2[1][1] + data_1[2]*data_2[1][2] 12=3*3 + 3*3 + 3*(-1) = 15 13data_1[0]*data_2[2][0] + data_1[0]*data_2[2][1] + data_1[0]*data_2[2][2] 14=1*(-3) + 1*(-3) + 1*6 = 0 15data_1[1]*data_2[2][0] + data_1[1]*data_2[2][1] + data_1[1]*data_2[2][2] 16=2*(-3) + 2*(-3) + 2*6 = 0 17data_1[2]*data_2[2][0] + data_1[2]*data_2[2][1] + data_1[2]*data_2[2][2] 18=3*(-3) + 3*(-3) + 3*6 = 0

出力結果としては、

python

1data_3 = [[-7, -14, -21],[5, 10, 15],[0, 0, 0]]

という風に得たいです。

実践したこと

python

1data_1 = [1, 2, 3] 2data_2 = [[-5, -1, -1], [3, 3, -1], [-3, -3, 6]] 3 4datann = 0 5Data = [] 6 7for data in range(len(data_1)): 8 for datan in range(len(data_2)): 9 datann += data_1[data]*data_2[datan] 10 Data.append(datann) 11 12print(Data) 13#出力結果 14#datann += data_1[data]*data_2[datan] 15#TypeError: unsupported operand type(s) for +=: 'int' and 'list'

出力結果が”TypeError: unsupported operand type(s) for +=: 'int' and 'list'”となってしまいました。
おそらく、data_2は二次元リストなのにdata_2[datan]としているのがエラーの原因だと考えられます。
そこで、以下のようにコードを書き換えました。

python

1data_1 = [1, 2, 3] 2data_2 = [[-5, -1, -1], [3, 3, -1], [-3, -3, 6]] 3 4datann = 0 5Data = [] 6 7for data in range(len(data_1)): 8 for datan in range(len(data_2)): 9 datann += data_1[data]*data_2[datan][datan] 10 Data.append(datann) 11 12print(Data) 13#出力結果 14#[-5, -2, 4, -6, 0, 12, -3, 6, 24]

このようになり、エラーは表示されなくなったのですが得たい結果と違うものが出てしまってここで行き詰っています。よろしくお願いいたします。

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

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

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

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

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

guest

回答3

0

python3

1data_1 = [1, 2, 3] 2data_2 = [[-5, -1, -1], [3, 3, -1], [-3, -3, 6]] 3 4Data = [] 5for dt2 in data_2: 6 Data1 = [] 7 for dt1 in data_1: 8 sum = 0 9 for dt22 in dt2: 10 sum += dt1 * dt22 11 Data1.append(sum) 12 Data.append(Data1) 13 14print(Data) 15

投稿2022/06/22 00:29

tatsu99

総合スコア5438

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

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

退会済みユーザー

退会済みユーザー

2022/06/22 01:01

ありがとうございます!
退会済みユーザー

退会済みユーザー

2022/06/22 01:42

申し訳ございません。1つ質問したいことがあります。data_1の中を小数点を含めたらどうなるのかと思ったので計算してみたのですが、TypeError: 'float' object is not iterableと出てしまいました。このような場合はどうすればいいでしょうか?
tatsu99

2022/06/22 02:20

例として data_1 = [1, 2.5, 3] のようにしたのですか? 実際に、変えたdata_1の内容を例のように提示してください。
退会済みユーザー

退会済みユーザー

2022/06/22 23:44

data_1 = [0.3, 4, 1.2]としました。
tatsu99

2022/06/23 00:17

おかしいですね。 data_1 = [0.3, 4, 1.2]とし、こちらで実行すると [[-2.1, -28, -8.4], [1.4999999999999998, 20, 5.999999999999999], [0.0, 0, 0.0]] になります。TypeError: 'float' object is not iterableのエラーにはなりません。 なにか、ほかのところも、変えてないでしょうか。
退会済みユーザー

退会済みユーザー

2022/06/23 05:30

変更してました。 data_1 = [1, 2.5, 3]のほかにdata_2 = [-5, -1, -1, 3, 3, -1, -3, -3, 6]のように扱っていました。二次元リストなのに一次元リストとして扱っていました。お手数おかけしました。
guest

0

ベストアンサー

python

1[[sum(i) * j for j in data_1] for i in data_2]

投稿2022/06/21 22:21

melian

総合スコア19712

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

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

退会済みユーザー

退会済みユーザー

2022/06/22 01:00

ありがとうございます!
guest

0

上記のリストを用いて下記のような計算を行いたいです。

その通りにコードを書けばいいってはなしですが、なにか不具合があるんでしょうか

投稿2022/06/21 22:17

y_waiwai

総合スコア87749

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

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

Zuishin

2022/06/21 22:26 編集

> その通りにコードを書けばいいってはなしですが、なにか不具合があるんでしょうか 次のように書いていますね。 > 出力結果が”TypeError: unsupported operand type(s) for +=: 'int' and 'list'”となってしまいました。
y_waiwai

2022/06/21 22:35

実践したこと、のように変なことしてエラーが出てるってはなしですよねw そこに書いてあるとおりにコードを書いてみよう、ってはなしなんですが #まあそれでもそれで望む結果が出るのかってのが疑問なところですが
Zuishin

2022/06/21 22:55

「実践したこと」は「質問者が自分でやってみたこと」です。 自分では「その通りにコードを書くこと」ができないので、どうすればいいかという質問に対して、「その通りにコードを書け」という回答には何の情報も入っていません。
退会済みユーザー

退会済みユーザー

2022/06/22 01:06

すいません、勉強し直してきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問