a =[1,2,3,4,5]print(a+2)
実行結果
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In[1], line 31 a =[1,2,3,4,5]---->3print(a+2)4print(a*2)
TypeError: can only concatenate list(not"int") to list
a =[1,2,3,4,5]print(a-2)
実行結果
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In[2], line 31 a =[1,2,3,4,5]---->3print(a-2)
TypeError: unsupported operand type(s)for-:'list'and'int'
a =[1,2,3,4,5]print(a*2)
実行結果
[1,2,3,4,5,1,2,3,4,5]
a =[1,2,3,4,5]print(a/2)
実行結果
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In[4], line 31 a =[1,2,3,4,5]---->3print(a/2)
TypeError: unsupported operand type(s)for/:'list'and'int'
リストに対して単純に四則演算はできません。
ちなみにこの場合、こんな答えになるのを予想して計算しました。
a =[1,2,3,4,5]print(a+2)[3,4,5,6,7]print(a-2)[-1,0,1,2,3]print(a*2)[2,4,6,8,10]print(a/2)[0.5,1,1.5,2,2.5]
ということで、このような答えが得られる方法を紹介していきます。
numpyを使う方法
まずはnumpyを使う方法です。
numpyのリスト(ndarray)であれば、そのまま四則演算をすることができます。
import numpy as np
a =[1,2,3,4,5]print(np.array(a)+2)print(np.array(a)-2)print(np.array(a)*2)print(np.array(a)/2)
実行結果
[34567][-10123][246810][0.51.1.52.2.5]
for文を使う方法
for文で要素を一つずつ取り出し、計算後に新たなリストに追加していく方法です。
a =[1,2,3,4,5]
b =[]for val in a:
b.append(val+2)
c =[]for val in a:
c.append(val-2)
d =[]for val in a:
d.append(val*2)
e =[]for val in a:
e.append(val/2)print(b)print(c)print(d)print(e)
実行結果
[3,4,5,6,7][-1,0,1,2,3][2,4,6,8,10][0.5,1.0,1.5,2.0,2.5]
初心者にとっては一番分かりやすいですが、プログラムの行数が増えてしまう書き方です。
リスト内包表記を使う方法
for文で簡単に書けたので、リスト内包表記でも書くことができます。
a =[1,2,3,4,5]
b =[val+2for val in a]
c =[val-2for val in a]
d =[val*2for val in a]
e =[val/2for val in a]print(b)print(c)print(d)print(e)
実行結果
[3,4,5,6,7][-1,0,1,2,3][2,4,6,8,10][0.5,1.0,1.5,2.0,2.5]
a =[1,2,3,4,5]defplus(val):return val+2defminus(val):return val-2deftimes(val):return val*2defdivide(val):return val/2
b =map(plus, a)
c =map(minus, a)
d =map(times, a)
e =map(divide, a)print(list(b))print(list(c))print(list(d))print(list(e))
実行結果
[3,4,5,6,7][-1,0,1,2,3][2,4,6,8,10][0.5,1.0,1.5,2.0,2.5]
表示する際、リストに変換することをお忘れなく。
lambda式を使う方法
def文とmap関数を使えるのなら、lambda式を使うのも簡潔に書ける良い方法です。
a =[1,2,3,4,5]
b =map(lambda val: val+2, a)
c =map(lambda val: val-2, a)
d =map(lambda val: val*2, a)
e =map(lambda val: val/2, a)print(list(b))print(list(c))print(list(d))print(list(e))
実行結果
[3,4,5,6,7][-1,0,1,2,3][2,4,6,8,10][0.5,1.0,1.5,2.0,2.5]
コメント