« Pythonでエクセルシートをテストする!(5) | トップページ | Go言語のfor文 »

Pythonのリスト内包表現とRubyのブロック

コレクションの処理をするとき、Pythonではリスト内包表現を使うが、Rubyではブロックを使う。

例えば、コレクションcolの各要素を10倍した新しいコレクションを作るとき、Pythonなら次のように書く。

col = [1, 2, 3, 4, 5]
[x * 10 for x in col]

Rubyなら次のように書く。

col = [1, 2, 3, 4, 5]
col.collect{|x| x * 10}

両方とも、コレクションcolの各要素をxに代入して、x*10を評価した結果を新しいコレクションにする、という意味だ。
違うのは、Pythonが右から左に読む文法で、Rubyが左から右に読む文法だということだ。両方の式を比べると、"x * 10"と"col"の順番が逆になっている。

Pythonに慣れているとRubyの文法には違和感があるのだが、使い始めるとすぐ慣れるようにも思う。それにRubyのブロックは面白い文法だ。

それにしても、PythonとRubyのこの順序の違いは、英語と日本語の違いに源があるのかもしれない。

★WOZ★

|

« Pythonでエクセルシートをテストする!(5) | トップページ | Go言語のfor文 »

プログラミング」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1286769/32725693

この記事へのトラックバック一覧です: Pythonのリスト内包表現とRubyのブロック:

« Pythonでエクセルシートをテストする!(5) | トップページ | Go言語のfor文 »