読者です 読者をやめる 読者になる 読者になる

リスト内包表現

Erlang Python

 Erlangのリファレンスを見ながら練習。この辺は難しくないところですね。やっぱり、Erlangでもmap, filterよりもリスト内包表現を使うべきなのかな?

【追記】
 lists:append, lists:map, lists:filterを使うと、リスト内包表現より簡単な場合もあるよ、みたいなことが書いてあったので、ケースバイケースということでしょうか。

1> [X || X <- [1, 2, 3, 4, 5], X > 3].
[4,5]

 Pythonならば、

>>> [x for x in [1, 2, 3, 4, 5] if x > 3]
[4, 5]


 フィルターを追加。

2> [X || X <- [1, 2, a, 3, b, 4, 5], integer(X), X > 3].
[4,5]

 Pythonならば、

>>> [x for x in [1, 2, 'a', 3, 4, 'b', 5] if isinstance(x, int) and x > 3]
[4, 5]


 デカルト積。

3>  [{X, Y} || X <- [1,2,3], Y <- [a,b]].
[{1,a},{1,b},{2,a},{2,b},{3,a},{3,b}]

 Pythonならば、

>>> [(x, y) for x in [1, 2, 3] for y in ['a', 'b']]
[(1, 'a'), (1, 'b'), (2, 'a'), (2, 'b'), (3, 'a'), (3, 'b')]