min()とmax()みたいなのを自分で作って楽しんでニヤニヤする

min()とmax()を覚えようチュートリアルをやったとき
これって似たようなものを自分で書いてみることができるのでは?
と思ったので、できたできたしめしめニヤニヤ(・∀・)することにした。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#min(),max()を自分で作ってみる
#for で作ってみる

def check_min_max(args):
if args:
maxNum = 0
minNum = 999999999 #オーバーフローするかもなのでとりあえず9桁
for i in args:
if i > maxNum:
maxNum = i

for j in args:
if j < minNum:
minNum = j
return maxNum, minNum
else:
return 'args Empty'

print(check_min_max([]))
print(check_min_max([100,392,43,57,2,46,7,3345]))

minの初期値を9桁の9にしているのがいささか気持ち悪いんだけど、
実務とかで使うときは、業務内容にあわせて何かしら最大値を想像して設定すると思われ。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#min(),max()を自分で作ってみる
#sort() で作ってみる

def check_min_max(args):
if args:
args.sort()
minNum = args[0]
maxNum = args[-1]
return maxNum, minNum
else:
return 'args Empty'

print(check_min_max([]))
print(check_min_max([100,392,43,57,2,46,7,3345]))

sort()メソッドを使うと元のリストがバキッと書き換えられる。(書き換えてほしくなければ、対象のリストを要コピー)

minの値をminNumに入れたのち、maxは.reverse()してargsの先頭をmaxNumに入れる書き方もできるけど、これの方がスッキリしてるかと。

個人的に、-1で最後尾の値を取れるっていうのは最高に気持ちいい。無駄がない。

結果的にそんな時間もかからず書けたし、楽しかった。楽しいよ。
じゃあsortみたいなものを自分で書いたらどうなるか考えたくなる。