pythonと現状


以前書き留めたメモの疑問がいくつか解消されたのでメモをば。

・同時に2つのシーケンスを一度のforで回すとき
→zip()関数を使う

ex) list = [ x+y for (x,y) in zip( L, M) ]

・リスト内包表記について
→単純にfor文を短く簡潔にして、出力がリストになったものと考えて良い

ex) result = [ x+y for x in 'abc' for y in 'lmn' if not x =='a' ]
 forを二重に回せる(このループだと9回回る)
 追加要素(多重forやif)は後半に書く

またメモになかったドキュメンテーション文字列も覚えた。
てっきりHTMLのようにタグ指定でつけるのかと思っていたが、単純に配置で決まるものらしい。
モジュールや関数、クラスの名前宣言直後にある文字列がドキュメンテーション文字列扱いになるようだ。対話モードでは文字列を打ち込むとエコーでそのまま返ってくるが、スクリプトに書き込む分にはその心配はない。そういった仕様を利用しているのだろうか。

引き続き気になる店としてはやはりイテレータ・ジェネレータ、あとラムダ式の有効な使い方も気になってきた。本当にラムダ式に使い道はあるのだろうか? タプルよりかは使えそうだとは思うが。


そう、すっかり書くのを忘れていたが今さらどうしてこんなに猛烈にpythonの学習をしているのかというと、今月から大学の研究室でアルバイトを始めたからだ。仕事内容はプログラミング。待ってましたと言わんばかりに聞きつけて即応募した。
コーディングに使用する言語としてpythonの勉強をしているが、同時に設計するプログラムのアルゴリズムも勉強しなければいけない。
今回つくるプログラムは文書の近似度を計算するプログラムだ。
 准教授の先生には local sensitive hashing を使うと言われたけれど……正直難しい。
ざっくばらんな解釈をして、とりあえずこんな感じに作ってみようと決めたのが昨日だ。
一応三ヶ月の期間という話だったので、少なくとも今月中には進歩を見せなければなるまい。

明日からも文字コードと文字化けに格闘する日々が続くだろう。