Python: Lamada functionsとList comprehensionとZip ver. 2

Pythonの基本的なスキルを学びます。

Pure Python、つまり、ライブラリを使用せずにできることです。Rだと「ベース」というところですが、Pythonでは、”pure”と呼ぶようです?

 

次に解説があります。

 

3 Essential Python Skills for Data Scientists

 

I.Lambda Functions

 

ふつう関数はdefで作成しますが、シンプルなものはLambda Functionsで書くと短く表現できます。

次は、2乗する関数2数を乗じる関数を、それぞれdefで作成する場合とLambda Functionsで作成する式を示しました。

 

 

II.List comprehension

 

1.リストを作成

 

List comprehension「内包表記」というと難しそうですが、リストを作る一つの方法と考えてください。

たとえば、[0, 1, 4, 9, 16, 25, 36, 49, 81, 100, 121]のリストを作る場合、下の図のように3つの方法があります。

下の図の1のように一つ一つ書いてもよいですが、長いリストになると面倒です。

2のようにfor(繰り返し、ループ)を使えば、長いリストでも短い式で表現できます。

2と同じくforを使いますが、List Comprehensionなら、次のように1行で書けて簡単です。

 

[num*num for num in range(12)] 

 

range(12)は、1から、12の前の整数、つまり、0, 1,2,,,11を表しています。

num*numは同じ数を2回かけるという意味ですが、numは0から11までの数字であると指定されていますので、例えば0なら、0*0で0、1なら1*1で1になります。

これを繰り返し、その結果を順に並べてリストを作成せよ、というのが上の式全体の意味です。

ちなみに、numというのがわかりにくければ、xと書いてもかまいません。

 

>>>[x*x for x in range(12)]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121]
 

 

表現として、2と3を比較すると、3は、2のappend(後ろに追加)を省略して、書き方を簡単にしていると言えます。

 

 

2.リストから別のリストを作成

 

1はリストを作成する式でしたが、既存のリストから別のリストを作成することもできます。

例えば、次のようなlist1があるとします。

 

list1 = ['Acer', 'Asusu', 'Lenovo', 'HP'] 

 

このリストから一文字目がAで始まる語を取り出してリストにしてみましょう。

ふつうにforを使って関数を作成する式は下のようになります。

 

 

ややこしく見えるかもしれませんが、オブジェクトの名前機能語(pythonの機能を担っている記号)を区別するとわかりやすくなります。

赤茶色の文字列は機能語です。例えば、”def”は「関数を作成する」、”,”は「アーギュメント区切る」、”for”は「繰り返す」、を表しています。

他にも、オブジェクト名と同じ水色になっていますが、”[” や “]” や “:” もPythonにおける機能を表す記号です。

これらに対して、”list1″は、’Acer’と ‘Asus’と’Lenovo’, ‘HP’からなるリストの名です。他に、”Valids”も”Word”もオブジェクトの名です。

下のスクリプトでは、”list1″が3回、”Valids”が3回、”Word”が3回でてきますが、これらは、オブジェクトを表す名前なのでそれぞれ区別できれば、他の名前で代えてもかまいません。

例えば、これらを”object1″、”object2″、”object3″に置き換えて、starts_with_a1という新たな関数を作成しても、同じ結果が得られます。

 

 

少しわかりにくい式がありますので、説明します。

 

object3[0].lower() == 'a' 

 

object3[0]は、object1のリストから取り出された単語の0番目(Pythonは0から数える)の文字、例えば、”Acer”ならば、”A”です。

データ名.lower() == ‘a’は、データ(この場合は1文字目)を小文字(.lower())にして、それが’a’である、という意味です。小文字に変換しているのは、リストに小文字ではじまる単語がある場合にも対応するためです。

 

onject2.append(object3) 

 

object2の後にobject3を追加する、という意味です。

 

to be continued

Please follow and like us:
error

About shibatau

I was born and grown up in Kyoto. I studied western philosophy at the University and specialized in analytic philosophy, especially Ludwig Wittgenstein at the postgraduate school. I'm interested in new technology, especially machine learning and have been learning R language for two years and began to learn Python last summer. Listening toParamore, Sia, Amazarashi and MIyuki Nakajima. Favorite movies I've recently seen: "FREEHELD". Favorite actors and actresses: Anthony Hopkins, Denzel Washington, Ellen Page, Meryl Streep, Mia Wasikowska and Robert DeNiro. Favorite books: Fyodor Mikhailovich Dostoyevsky, "The Karamazov Brothers", Shinran, "Lamentations of Divergences". Favorite phrase: Salvation by Faith. Twitter: @shibatau

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.