それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

リストを文章で理解させる

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が解釈します

ってことらしい。


この機能、たぶん使わない。 だってJavaScriptPerlPHP書いてる人がソース見ても何のことかわからん。Pythonユーザーからすると、「それは読めばわかるだろ。」ってことだろうなぁ。