a =[1,2,3,4,5]
b =[2,4,6,8,10]print(a+b)
実行結果
[1,2,3,4,5,2,4,6,8,10]
a =[1,2,3,4,5]
b =[2,4,6,8,10]print(a-b)
実行結果
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In[1], line 41 a =[1,2,3,4,5]2 b =[2,4,6,8,10]---->4print(a-b)
TypeError: unsupported operand type(s)for-:'list'and'list'
a =[1,2,3,4,5]
b =[2,4,6,8,10]print(a*b)
実行結果
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In[2], line 41 a =[1,2,3,4,5]2 b =[2,4,6,8,10]---->4print(a*b)
TypeError: can't multiply sequence by non-int of type 'list'
a =[1,2,3,4,5]
b =[2,4,6,8,10]print(a/b)
実行結果
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In[3], line 41 a =[1,2,3,4,5]2 b =[2,4,6,8,10]---->4print(a/b)
TypeError: unsupported operand type(s)for/:'list'and'list'
import numpy as np
a =[1,2,3,4,5]
b =[2,4,6,8,10]print(np.array(a)+np.array(b))print(np.array(a)-np.array(b))print(np.array(a)*np.array(b))print(np.array(a)/np.array(b))
実行結果
[3691215][-1-2-3-4-5][28183250][0.50.50.50.50.5]
ただし二つのリストが同じ要素数でない場合はエラーとなるので注意です。
import numpy as np
a =[1,2,3,4,5,6]
b =[2,4,6,8,10]print(np.array(a)+np.array(b))
実行結果
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
Cell In[7], line 63 a =[1,2,3,4,5,6]4 b =[2,4,6,8,10]---->6print(np.array(a)+np.array(b))
ValueError: operands could not be broadcast together with shapes (6,)(5,)
for文を使う方法
for文とzip関数を使い、同じインデックスの要素を取り出し計算する方法です。
a =[1,2,3,4,5]
b =[2,4,6,8,10]
c =[]for a_val, b_val inzip(a, b):
c.append(a_val + b_val)
d =[]for a_val, b_val inzip(a, b):
d.append(a_val - b_val)
e =[]for a_val, b_val inzip(a, b):
e.append(a_val * b_val)
f =[]for a_val, b_val inzip(a, b):
f.append(a_val / b_val)print(c)print(d)print(e)print(f)
実行結果
[3,6,9,12,15][-1,-2,-3,-4,-5][2,8,18,32,50][0.5,0.5,0.5,0.5,0.5]
この場合、二つのリスト内の要素数が異なっていても、自動で短い方に合わせてくれます。
a =[1,2,3,4,5,6]
b =[2,4,6,8,10]
c =[]for a_val, b_val inzip(a, b):
c.append(a_val + b_val)
d =[]for a_val, b_val inzip(a, b):
d.append(a_val - b_val)
e =[]for a_val, b_val inzip(a, b):
e.append(a_val * b_val)
f =[]for a_val, b_val inzip(a, b):
f.append(a_val / b_val)print(c)print(d)print(e)print(f)
実行結果
[3,6,9,12,15][-1,-2,-3,-4,-5][2,8,18,32,50][0.5,0.5,0.5,0.5,0.5]
リスト内包表記を使う方法
for文で簡単に書けたので、リスト内包表記でも書くことができます。
a =[1,2,3,4,5]
b =[2,4,6,8,10]
c =[a_val + b_val for a_val, b_val inzip(a, b)]
d =[a_val - b_val for a_val, b_val inzip(a, b)]
e =[a_val * b_val for a_val, b_val inzip(a, b)]
f =[a_val / b_val for a_val, b_val inzip(a, b)]print(c)print(d)print(e)print(f)
実行結果
[3,6,9,12,15][-1,-2,-3,-4,-5][2,8,18,32,50][0.5,0.5,0.5,0.5,0.5]
for文を利用した場合と同様にリストの要素数が異なっていても、短い方に合わせてくれます。
a =[1,2,3,4,5,6]
b =[2,4,6,8,10]
c =[a_val + b_val for a_val, b_val inzip(a, b)]
d =[a_val - b_val for a_val, b_val inzip(a, b)]
e =[a_val * b_val for a_val, b_val inzip(a, b)]
f =[a_val / b_val for a_val, b_val inzip(a, b)]print(c)print(d)print(e)print(f)
実行結果
[3,6,9,12,15][-1,-2,-3,-4,-5][2,8,18,32,50][0.5,0.5,0.5,0.5,0.5]
a =[1,2,3,4,5]
b =[2,4,6,8,10]defplus(a_val, b_val):return a_val + b_val
defminus(a_val, b_val):return a_val - b_val
deftimes(a_val, b_val):return a_val * b_val
defdivide(a_val, b_val):return a_val / b_val
c =map(plus, a, b)
d =map(minus, a, b)
e =map(times, a, b)
f =map(divide, a, b)print(list(c))print(list(d))print(list(e))print(list(f))
実行結果
[3,6,9,12,15][-1,-2,-3,-4,-5][2,8,18,32,50][0.5,0.5,0.5,0.5,0.5]
この場合でもリスト内の要素数が異なっていたら、短い方に合わせて計算してくれます。
a =[1,2,3,4,5,6]
b =[2,4,6,8,10]defplus(a_val, b_val):return a_val + b_val
defminus(a_val, b_val):return a_val - b_val
deftimes(a_val, b_val):return a_val * b_val
defdivide(a_val, b_val):return a_val / b_val
c =map(plus, a, b)
d =map(minus, a, b)
e =map(times, a, b)
f =map(divide, a, b)print(list(c))print(list(d))print(list(e))print(list(f))
実行結果
[3,6,9,12,15][-1,-2,-3,-4,-5][2,8,18,32,50][0.5,0.5,0.5,0.5,0.5]
表示する際、リストに変換することをお忘れなく。
lambda式を使う方法
def文とmap関数を使えるのなら、lambda式を使うのも簡潔に書ける良い方法です。
a =[1,2,3,4,5]
b =[2,4,6,8,10]
c =map(lambda a_val, b_val: a_val + b_val, a, b)
d =map(lambda a_val, b_val: a_val - b_val, a, b)
e =map(lambda a_val, b_val: a_val * b_val, a, b)
f =map(lambda a_val, b_val: a_val / b_val, a, b)print(list(c))print(list(d))print(list(e))print(list(f))
実行結果
[3,6,9,12,15][-1,-2,-3,-4,-5][2,8,18,32,50][0.5,0.5,0.5,0.5,0.5]
もちろん二つのリストの要素数が異なっていたら、短い方に合わせて計算してくれます。
a =[1,2,3,4,5,6]
b =[2,4,6,8,10]
c =map(lambda a_val, b_val: a_val + b_val, a, b)
d =map(lambda a_val, b_val: a_val - b_val, a, b)
e =map(lambda a_val, b_val: a_val * b_val, a, b)
f =map(lambda a_val, b_val: a_val / b_val, a, b)print(list(c))print(list(d))print(list(e))print(list(f))
実行結果
[3,6,9,12,15][-1,-2,-3,-4,-5][2,8,18,32,50][0.5,0.5,0.5,0.5,0.5]
コメント