見出し画像

医療とテクノロジーの交差点にて【第2話】Pythonプログラミングの小技(1)ラムダ

どうも、トア・ルドクターです!
本記事は、医療とテクノロジーの交差点にてプログラミングを学ぶ医師の自己満ブログですが、建前的には以下の3つの目的があります。

(1)記事内容に関してエンジニアの諸先輩方からフィードバックを頂くことにより、自分自身の成長につなげること
(2)初学者である自分が勉強の実態をリアルに公開することで、これからプログラミングを学ぼうとする人の一助になりたいこと
(3)エンジニアの方々との"つながり”を増やすこと

さて、ここからが今回のメインテーマです。

【ラムダ(lambda)表記 / 無名関数 / 配列と関数】
以下はpython3のコードです。ラムダ(lambda)を用いて、関数の定義〜値代入をワンライナーですませる方法です。普段なら def func(a, b): return A と書くところを (lambda a,b: A) と書けるわけです。ラムダ表記では関数名(funcの部分)が不要であるため、この表記を無名関数といいます(ただし「関数名 = lambda...」のように関数名を付けることは可能)。戻り値が bool / int / string の場合など整理しました。とても分かりやすいですね。

x,y,z = map(int,input().split())

# 戻り値 bool
flag = (lambda a,b,c: a**2+b**2==c**2)(x,y,z)
if flag: print("ピラゴラス数です")

# 戻り値 int
ans = (lambda a,b,c: a*b + b*c + c*a)(x,y,z)
print(ans)

# 戻り値 str
s = (lambda a,b,c: str(a)+str(b)+str(c))(x,y,z)
print(s)

------------------------------------------------------
5 12 13
ピラゴラス数です
281
51213

ついでに、リストの全要素に関数を適応したい場合もワンライナーで書くことができます。即ち、全要素を2倍したいとか、全要素を2乗したいとかってのを簡便にできます。敢えて泥臭くやれば arr = [func[i] for i in range(N)] みたいな感じでしょうか。以下の方法を知れば、金輪際、こんなウンコードを書かずにすみます。

def double(a): return a*2              #普通の関数
square = (lambda a: a**2)              #ラムダの関数

arr = list(map(int, input().split()))  # int入力のリスト

double = list(map(double, arr))        # 全要素にdouble関数
square = list(map(square, arr))        # 全要素にsquare関数
triple = list(map(lambda a:a*3, arr))  # 全要素に無名関数

print(arr, double, square, triple)

----------------------------------------------------
5 6 7
[5, 6, 7] [10, 12, 14] [25, 36, 49] [15, 18, 21]

補足というか蛇足ですが、arr = array「配列」の意味で、func = function「関数」の意味ですね。また、ウンコードとは糞コードの意味です。

今回の記事は以上です。あくまで自分の学習記録の側面もあるので、基本的な内容でも初学者にとっては親切とは言い難い文面だったり、中級者以上の方には今更すぎる内容だったりするかもしれません。とすると、誰のための記事なのかって話ですが、コンセプトは自己満ブログなんですよ。それは大前提とさせて頂いた上で、結果的に誰かしらの役に立てたならば幸甚の至りです。
それではまたいつか!

【著者プロフィール】
都内で医師として研鑽する傍ら、独学でプログラミングを学ぶ26歳。趣味は『ギター / バイオリン / 美術鑑賞 / youtube鑑賞 / 創作料理 / 囲碁 / チェス / 折り紙 / スノボ / サーフィン / ドライブ』など枚挙にいとまがない。CIAの格闘武術クラブマガを始める。得意料理はバナナシチュー。ビールと牡蠣は生派だが生セックスは断固せず、経験人数の常用対数は2未満と清純を極める。略歴としては高2で数学全国1位(駿台)、文系で官僚をめざすも、ドラマ『コードブルー』の影響から気づいたら医師に。ディープラーニングG検定、統計検定2級、知的財産検定3級など取得。TOEICは次回900目指す予定(仮)。
【記事アーカイブ】
【第1話】医者なのにプログラミングを勉強してみた話
【第2話】pythonプログラミングの小技(1)ラムダ
【第3話】プログラミング初心者が学ぶべき3つのポイント
【第4話】競技プログラミングのススメ
【第5話】競技プログラミング物語(1)バイトリーダーの苦悩
【第6話】プログラミングで自作する実用アプリ(1)NEVER-NOTE
【第7話】プログラミングで解析したDNA鑑定の精度
【第8話】統計学は最強の学問であるのか?
【第9話】プログラミングすれば人類最高IQに対抗できる説

この記事が気に入ったらサポートをしてみませんか?