2007年2月8日 リストの内包表記へのコメントとして、2007/02/11 リストの内包表記とlambda(ヒビノキロク)で反応を頂いた。
その中でリストの内包表記の有効な使い道として「多変数の組み合わせから条件を満たす解を探索するような場合」として、Scheme:TaxiNumberのラマヌジャンのタクシーナンバーという例を教えていただいた。
というわけで、これをpythonでそのまま書いてみた。(%はコマンド、\は表示の都合での改行)
% python >>> [(a, b, c, d) for a in range(50) for b in range(a+1, 50) \ for c in range(a+1, b) for d in range(c+1, b) if a**3 + b**3 == c**3 + d**3] [(1, 12, 9, 10), (2, 16, 9, 15), (2, 24, 18, 20), (2, 34, 15, 33),\ (3, 36, 27, 30), (4, 32, 18, 30), (4, 48, 36, 40), (6, 48, 27, 45),\ (9, 34, 16, 33), (10, 27, 19, 24), (12, 40, 31, 33), (17, 39, 26, 36)]
まぁこんだけ長いリストもどうよとは思うけど、内包表記について認識を改められた。ぶっちゃけこんなに柔軟な表現ができるものとは思ってなかったよ。