日記

日々のことと、Python/Django/PHP/Laravel/nodejs などソフトウェア開発のことを書き綴ります

特有の型とシンタックス

三日目で燃え尽きたりして。

タプル

Pythonにも、この言語ならではの型があります。
もっともよく使うものとしては、タプルがあげられます。
タプルとはIndexer付きのデータ格納形式です。ただ、配列と異なるのは、Pythonシンタックスと組み合わせることで面白い使い方ができる点。それのサンプルコードが下記のような感じです。

tapule_data = (1, 2, 3)

first, second, third = tapuble
datas = [(1,2), (3,4), (5,6)]

for key, value in datas:
  print key, value
  # 12
  # 34
  # 56

上記のように、タプル型は変数に代入するときに、左辺をカンマで区切って複数指定することでタプル内のデータを異なる変数にまとめて代入できます。利用例として、関数を作ったが戻り値が複数あるけど、クラスを作るほどじゃないな。。。というときに大活躍です。また、うえのサンプルのように key, valueなんてペアを配列で管理するのもありがちですが、Pythonのfor文の仕様もあって、スマートにループ文を書くことができます。

スマートさには欠けますが、下記のような書き方もできます。

datas = [(1,2), (3,4), (5,6)]

for data in datas:
  print data[0],data[1]
  # 12
  # 34
  # 56

どうしてもIndexerを使ってアクセスしたいときは、このサンプルのような書き方もできます。

若干、脇道に逸れますが、Pythonのfor文には、例のセミコロンがありません。言語仕様としてサポートしていないので使うことはできません。その代わり、rangeという関数が用意されています。使い方はこう。

for i in range(10):
    print i

これを実行すると 0から 9までの数値が出力されます。for文くらい他の言語で使える形式をサポートしろよ、って感じですが、できないものは仕方がないので、range関数を使ってください。

ディクショナリ

特有と言うほどではないのですが、所謂、連想配列です。

dic = {'key':'value'}

print dic.has_key['key']

print dic['key']

has_keyでキー値の有無をチェック、鍵カッコでkeyをしていすると、そのキーの値を取得できます。
ディクショナリはクラスになっているので、すべてのキーを取り出したりするメソッドも用意されています。詳しくは、Pythonライブラリのマニュアルを参考にしてください。JavaのMapに近いインターフェースが用意されています。

明日は少しファイルIOに触れます。