filter()を使わず、map()を使わず、値をチェックする。そんな方法。
かなり特徴的
配列から、偶数を取り出し、各要素を2乗する処理。
さっきのmap()とfilter()を使うとこうなる
def f(x): return x%2 == 0 seq = filter( f, range(1,10) ) seq = map( lambda x : x*x, seq ) print seq
これを、英文で書いても、Pythonは理解してくれますよ。ってことらしい。
seq = range(1,10) print [ x*x for x in seq if x%2==0 ] # x*x の x は seq にある要素で 偶数のもの
配列の値のチェックとか、条件分岐くらいPythonが理解してくれますよ ってこと。
配列が英文っぽく書けますよってことがポイントらしい。
英文が
(x) for x in array if x is something
これが日本語なら、
この配列の要素 は (x) 、array の各要素xで x が something のもの
ってことか。
配列の中をもうちょっと英文っぽくすると。。。
this array is consits of (x) for x in array if x is something.
filterやlambdaを使わわない、だからコードとコメントが減って楽になる。「ソースに語らせる」と良いソースコードが書けるよってことだろうね。
英文のドキュメントには List Comprehension (Pythonが配列表現を理解する)と書いてある。
英文風に書けるので便利でしょ? ってことらしい。
英語が使えない俺には便利がさがいまいち理解できない。
#空白が含まれる配列を受け取った、どうしよう fruit = [" apple " , " orange", "banana", "mango "] #Pythonが解決します fruit = [ name.strip() for name in fruit ]
この場合、『 [ ]の中身は、(name.strip()) で、name は fruit の中身 』 とPythonが解釈します
ってことらしい。
この機能、たぶん使わない。 だってJavaScriptやPerl、PHP書いてる人がソース見ても何のことかわからん。Pythonユーザーからすると、「それは読めばわかるだろ。」ってことだろうなぁ。