内包表記

Pythonだと、この書き方ができる。
>>> def is_valid(a):
>>> △△△△return True if (a % 3) else False
(↑未だに、WordPressでの空白挿入がわかってない… orz)

通常だと4行で、
1行目:もし、aが3で割り切れないなら
2行目:     Trueを返し、
3行目:そうでなければ、
4行目:     Falseを返す。
だろうか。(なぜかこっちは、空白が挿入できてるのに… orz)

C言語なら
return (a%3 ? true : false);

(追記:そもそもreturn (a%3)とかで十分、ってな議論は承知。if / elseを1行にまとめる話を持ち出したかっただけ。)

最初、「え? ( ? : )構文が使えないの?」と思っていたけれど、その悩みはすぐに解決。

いずれにせよ、1行か。この、Pythonの後置ifが、今一つしっくり来なかった。
なんだか、トークンの並びが(慣れてないせいか)不自然な気がした。

ところが、これにさらに内包表記を組み合わせると、こんな書き方ができる。
value = [v for v in range(10) if is_valid(v)]

なんだか、これも慣れるまでは変態的な書き方な気がして・・・
でも、慣れてしまうとすごく便利かも。内包表記を使わなければ、4行
1: value = []
2: for v in range(10):
3:     if is_valid(v):
4:         value.append(v)
プログラムがすごくコンパクトになる。と思っていたら、後置ifにelseが加わると、内包表記の語順が変わる。よく言えば「変幻自在」なんだろうが、ぶっちゃけ、失礼を承知で言わせてもらえば、Pythonは変態的だ!

>>> value = [v if v%3 else “hoge” for v in range(1,10)]
>>> print(value)
[1, 2, ‘hoge’, 4, 5, ‘hoge’, 7, 8, ‘hoge’]

でも、たった1行でこれだけの表現なら、やっぱりCの時代から比べたらスゴイことなんだろう、という気がする。時短ですね。でも、この変態的構文に慣れるまでが・・・「慣れ」なんだろうなぁ。

CやJavaなら、もう枯れているというか「新しい」ことがほとんどないから、一旦教材を作ればそのままずっと使える。ところが、Pythonは3.7から@dataclassが使えるようになり、今その辺がホットらしくて、ごっそりと教材の書き直しを余儀なくされた。

Railsなんてもう、毎年作り直すぐらいの勢いで教材を書き換えている。この辺の代謝の速さには、いささか辟易している。
ずいぶん前は、before_filterが使えなくなって、before_actionになり、しばらく前はFactory GirlがFactory Botへと名称変更になった。「推奨コード」も、どんどん変わる。ボーッとしていると、”XXXX” is now obsolete.”(あんたもう、時代遅れだよ!)なんてメッセージが出てくる。

そうなんですけどね、前述の例題。
「3の倍数の時は『hoge』、そうでない時は普通に1, 2, 4, 5とする」という例題。
これ、元ネタが何かと言えば、あの方。単なる例題としてみれば、課題としては「こうしろ」という指示を出すだけだから、別にどうってことない例題だけれど、元ネタが何か知っている人に言えば、同じ例題でも、ちょっとだけ楽しみながらプログラムを書いてもらえる。そんなつもりで例題設定した。

そうなんですけどね。とっても失礼な話題の持ち出し方だが、これって、落ち着いて考えてみると、「だから何?」「だから、それがどうした」みたいな話題な訳であって、「3の倍数だけ”hoge”にする、それはわかったけど、何か特別な意味でもあるの?」みたいに受け取られてしまうと、結局「例題のための例題」でしかなくなってしまう。

オペレーティングシステムで使うコマンドの、tarは、”Tape Archive”で「テープ」ってなんですか?ってな質問があったとしたら、「昔はね、磁気テープってのにデータを保存していたんだよ」ってなことになり、未だにコマンド名としてはTapeは生きている。新しそうで、意外と古臭いものが生き残っている世界。そんな中で、この「3の倍数」は、今どうなっちゃったのか・・・いつまで、この「例題」に「特別な意味」を嗅ぎ取ってもらえるのか、わからない。

もしかして、もう既に「3の倍数の時だけ・・・」って、何ですかそれ、って人、いたりして。

コンピュータがらみのこの業界も、新陳代謝が激しくて、しんどいな、とか思うけれども、もしかしたら、あの「3の倍数」の業界の方々も、大変なんだろうなぁ。そもそも、冷静に考えてみると、あれって、一体なにが面白かったんだろう、なんて気分にもなってくる。不思議。

で、既に賞味期限切れの話題を持ち出して教材に埋め込んで、あわよくば授業で笑いを取ろうとしているあんたは、何なんだと、言われてしまうと・・・

やっぱり、そこに来るよなぁ・・・