面白いらしい。

現在、学科で比類無き不人気を誇っている言語Python
噂によれば、内包表記というのが面白いらしいよ。特にりすぱーな方々に人気だとか。


で、ちょっと検索とかしてみた。
確かにこれは面白い!

Pythonの内包表記は集合の内包的記法に似ているので,集合論に触れていれば凄く分かりやすい表現だと思います.
例えば[(x, x**2) for x in vec]は{(x, x^2)|x∈vec}に似ています.

内包 - 腹痛が痛いダイアリー日記 uskz氏コメント

うお、集合を定義で表現できるのか!ふーむ興味深い。
実例は以下*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:元記事にはないスペースを追加しています