東京大学のPythonプログラミング入門「6-2. 高階関数」備忘録

Python勉強中で備忘録です。今回はこちらのページをやりました。比較的短いです。
終盤の問題の解答が習ってない記載だったので少しずるいように思いました。
https://utokyo-ipp.github.io/6/6-2.html

⇒以下の解答をしたところ、true。

def max_value_key(d):
x = max(d, key=lambda k: d[k])
return x

ただし、xを置かずに、即
return max(d, key=lambda k: d[k])
で良かったようです。


⇒以下の解答をしたところ、true。

def max_abs(ln):
return max([x for x in map(abs, ln)])

模範解答は以下の通り、map(abs, ln)が既にリストになっているので、[x for x in map(abs, ln)]にする必要は無かったですね。


⇒以下の解答をしたところ、true。問題の前のpos関数を使わせてもらいました。

def number_of_big_numbers(ln, n):
return len(list(filter(pos, list(map(lambda x: x-n, ln)))))

模範解答は以下の通り。pos関数使ってないのは良いですね。
lambda x: 1 で要素を1にする、なんて習っていない気がします。
filter(lambda x: x>n,〇〇)でn以上かフィルターする、のも習っていないと思います。


⇒以下の解答をしたところ、true。

def number_of_long_lines(file, n):
with open(‘file’, ‘r’, encoding=’utf-8′) as f:
return len(list(filter(pos, list(map(lambda x: x-n, [len(x) for x in f])))))

*「for len(x) in f:」みたいな表記はダメのようです。

模範解答は以下の通り。1行目はOK。2行目は先ほどの問題と同じ話。

コメント

タイトルとURLをコピーしました