面白いらしい。
現在、学科で比類無き不人気を誇っている言語Python。
噂によれば、内包表記というのが面白いらしいよ。特にりすぱーな方々に人気だとか。
で、ちょっと検索とかしてみた。
確かにこれは面白い!
Pythonの内包表記は集合の内包的記法に似ているので,集合論に触れていれば凄く分かりやすい表現だと思います.
内包 - 腹痛が痛いダイアリー日記 uskz氏コメント
例えば[(x, x**2) for x in vec]は{(x, x^2)|x∈vec}に似ています.
うお、集合を定義で表現できるのか!ふーむ興味深い。
実例は以下*1:
>>> xs = (1,2,3,4,5) >>> ys = (9,8,7,6,5) >>> bigmuls = [(x,y)for x in xs for y in ys if x*y > 25] >>>print bigmuls [(3,9), (4,9), (4,8), (4,7), (5,9), (5,8), (5,7), (5,6)]IBM developerWorks : ご指定のページは見つかりませんでした
bigmulsは、xsとysの中から x*y > 25 という条件に当てはまる組み合わせを集めたものになる。ほお!
確かにこれは他のどんな言語でも実現可能な簡単な論理だけど、書こうとしたらたぶんfor文の二重回しになるだろうね。それと比べれば、この記述は論理が明確だ。
>>> a = ('ne', 'ushi', 'tora') >>> [x for x in a] ['ne', 'ushi', 'tora'] >>> [x.upper() for x in a] ['NE', 'USHI', 'TORA']ちまちま Python 学びつつ… - 猫(=・ω・=)顔 1.0β
上のように使えば、Lispで言うmapcarと似たようなものになってるね。ふーむ。
先ほどのuskz氏のコメントは、やたらと短いクイックソートの例も載っているので必見。
ただ、Pythonの使い方がよく分からないのでまだ試せてない。そのまんま打ち込んだら一行目でシンタックスエラーになっちゃった。わはは。
*1:元記事にはないスペースを追加しています