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

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

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

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

Q&A

解決済

1回答

17212閲覧

listの減算除算エラー TypeError: unsupported operand type(s) for -: 'list' and 'list'

saru999

総合スコア7

Python 3.x

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

0グッド

0クリップ

投稿2019/01/04 15:58

前提・実現したいこと

教科書では下記(1)(2)(3)(4)のようになっていました。
プログラムをcolaboratoryにコピペして、Shift+Enterで実行しました。
しかし、実行してみるとエラーが出ます。

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

エラーメッセージ(3)
TypeError Traceback (most recent call last)
<ipython-input-55-822481175f12> in <module>()
----> 1 ret=(p[1:]-p[:-1])/p[:-1]
2 print(ret )
TypeError: unsupported operand type(s) for -: 'list' and 'list'

該当のソースコード

(1)

p=[1,1.1,0.9,1.05]

(2)

print(p[:-1])
print(p[1:])

[ 1. 1.1 0.9]
[ 1.1 0.9 1.05]

(3)

ret=(p[1:]-p[:-1])/p[:-1]
print(ret )

[ 0.1 -0.18181818 0.16666667]

(4)

ret=p[:-1]/p[1:]-1
print(ret )

[-0.09090909 0.22222222 -0.14285714]

試したこと

(3)と(4)のところで同じエラーが出て正解の数値が出ません。
エラーは、
TypeError: unsupported operand type(s) for -: 'list' and 'list'
とでます。
(3)と(4)をどのようにしたらいいでしょうか?
教えてください。

補足情報

環境 colaboratory
python ver3.6.7

よろしくおねがいします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

おそらく(1)と(2)の間に以下のようなコードが抜けています。

Python

1import numpy as np 2p=np.array(p)

つまりpnumpy.arrayであるはずです。
これはprint結果が[1, 1.1, 0.9]ではなく[1. 1.1 0.9]と表記されていることからも推測できます。

投稿2019/01/04 16:28

編集2019/01/04 18:02
can110

総合スコア38262

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

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

saru999

2019/01/04 22:40

ありがとうございます。 教わったようにしたらうまくいきました。 なぜ、この2行が必要なのでしょうか? (1)(2)のlistは作動するのに、(3)(4)の前にはこの2行がないとエラーになるのでしょうか? 教えてください。 import numpy as np p=np.array(p) よろしくおねがいします。
can110

2019/01/05 01:38

通常のリスト同士は割り算できません。そういう仕様になっています。 しかしnumpy.arrayだと割り算できるような機能を持たせてあります。 簡単にいえば、numpyはそのような便利な機能をたくさん持つパッケージです。
saru999

2019/01/05 05:17

なるほど。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問