u-ryo's blog

various information for coding...

Learn Python 3 the Hard Way

| Comments

知人がLearn Python 3 the Hard Way翻訳しました。 凄いなぁと思うと同時に、 見てみると既に英語版勉強した人がいるというので、 その人がやったという初心者用練習問題を、 ジャニヲタじゃないので、 というか初心者ではないので「一行で」やってみました。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
>>> def average_age(members):
...  return sum([x[2] for x in members])/len(members)
...
>>> average_age([('s','s',35),('a','a',34),('n','n',34),('d','o',36),('j','j',34)])
34.6

>>> def oldest_member(members):
...  return max(members, key=(lambda x:x[2]))[0]
...
>>> oldest_member([('s','s',35),('a','a',34),('n','n',34),('d','o',36),('j','j',34)])
'd'

>>> def second_oldest_member(members):
...  return sorted(members, key=(lambda x:x[2]))[1][0]
...
>>> second_oldest_member([('s','s',35),('a','a',34),('n','n',34),('d','o',36),('j','j',34)])
'n'

>>> def next_older_member(members, nickname):
...  return min([a for a in members if a[2] > [b for b in members if b[0]==nickname][0][2]],key=(lambda x:x[2]))[0]
...
>>> next_older_member([('st','ms',19),('m','my',17),('k','nk',23),('f','kf',22),('sh','ss',20)],'f')
'k'

>>> def check_future_age(current_members, future_members):
...  return len({i[2]-j[2] for i,j in zip(current_members,future_members)}) == 1
...
>>> check_future_age([('st','ms',19),('m','my',17),('k','nk',23),('f','kf',22),('sh','ss',20)],[('st','ms',22),('m','my',20),('k','nk',26),('f','kf',25),('sh','ss',23)])
True
>>> check_future_age([('st','ms',19),('m','my',17),('k','nk',23),('f','kf',22),('sh','ss',20)],[('st','ms',22),('m','my',20),('k','nk',26),('f','kf',25),('sh','ss',24)])
False

あぁ、なんてアホなことに時間と頭を使ってしまった...

minmaxsortedってリスト内包表記で出来ないんですか?

印税は初版で20〜30万、あとは増刷でガッポガッポ、だそうです。 1年半かかったって。お疲れさまでした。 ぼくも販促に協力しましょうかね。 そしておこぼれにあずかれれば!

Comments