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