PythonとErlangでのリスト内包表記
リストの要素全てに同じ処理を施したいときや,ある条件を満たす要素のみをリストから抽出したいときは,リスト内包表記が便利となります.これは,C++やJavaには無い表記方法なので,慣れていないと若干分かりづらいかも知れません.
たとえば,リストの要素全てを2倍にしたいときは,
>>> [x * 2 for x in [1, 2, 3, 4, 5]] [2, 4, 6, 8, 10]
1> [X * 2 || X <- [1, 2, 3, 4, 5]]. [2,4,6,8,10]
という感じで行うことが出来ます.
二つのリストから,共通項を抜き出したいときは以下のようにすると出来ます.
>>> [x for x in [1, 2, 5, 8, 9] for y in [1, 5, 6, 9] if x == y] [1, 5, 9]
2> [X || X <- [1, 2, 5, 8, 9], Y <- [1, 5, 6, 9], X =:= Y]. [1,5,9]
という風になります.
数式であらわすと,
X' = {x | x ∈ X, y ∈ Y, x = y}
という感じです.
Erlangの方が,数学的な記法に近いですね.