質問: ### 前提・実現したいこと 教科書では下記(1)(2)(3)(4)のようになっていました。 プログラムをcolaboratoryにコピペして、Shift+Enterで実行しました。 しかし、実行してみるとエラーが出ます。 ### 発生している問題・エラーメッセージ エラーメッセージ(3) TypeError Traceback (most recent call last) in () ----> 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 よろしくおねがいします。
回答: おそらく(1)と(2)の間に以下のようなコードが抜けています。 ``` import numpy as np p=np.array(p) ``` つまり`p`は`numpy.array`であるはずです。 これはprint結果が`[1, 1.1, 0.9]`ではなく`[1. 1.1 0.9]`と表記されていることからも推測できます。