目次
リスト内の要素への四則演算
前回、PythonのmatplotlibでX軸を上に、Y軸を右に表示する方法を紹介しました。
【matplotlib】X軸を上に、Y軸を右に表示する方法[Python]
matplotlib 前回、Pythonのmatplotlibでお互いに関連づけられる単位をもつ2軸を作成する方法を紹介しました。 今回はX軸を上に、Y軸を右に表示する方法を紹介します。 …
今回はリスト内の全ての数値に対して同じ値で足し算、引き算、掛け算、割り算する方法を紹介します。
それでは始めていきましょう。
正しく計算できない例
まずは正しく計算できない例です。
とりあえず数値のリストを作成し、それらに適当な数を四則演算してみます。
a = [1, 2, 3, 4, 5]
print(a+2)
実行結果
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In[1], line 3
1 a = [1, 2, 3, 4, 5]
----> 3 print(a+2)
4 print(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 3
1 a = [1, 2, 3, 4, 5]
----> 3 print(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 3
1 a = [1, 2, 3, 4, 5]
----> 3 print(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)
実行結果
[3 4 5 6 7]
[-1 0 1 2 3]
[ 2 4 6 8 10]
[0.5 1. 1.5 2. 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+2 for val in a]
c = [val-2 for val in a]
d = [val*2 for val in a]
e = [val/2 for 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]
def文を使う方法
def文を使って目的の計算を関数としてしまう方法です。
この場合def文で目的の計算を定義したのち、map関数を使うとリストの要素を全て一度に計算することができます。
a = [1, 2, 3, 4, 5]
def plus(val):
return val+2
def minus(val):
return val-2
def times(val):
return val*2
def divide(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]
次回は二つのリストで同じインデックスの要素を足し算、引き算、掛け算、割り算する方法を紹介します。
【Python基礎】二つのリストで同じインデックスの要素を足し算、引き算、掛け算、割り算する方法
リスト同士の四則演算 前回、Pythonでリスト内の全ての数値に対して同じ値で足し算、引き算、掛け算、割り算する方法を紹介しました。 今回は二つのリストで同じインデ…
ではでは今回はこんな感じで。
コメント