それマグで!

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

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

配列の扱い

PythonのプログラミングはJavaScriptに似ている。文法はまるで似ていないが。発想が似てる。

配列の動的インクリメント

Javascriptのばあい
var hoge;
hoge[hoge.length] = "test1";
hoge[hoge.length] = "test2";
hoge[hoge.length] = "test3";
//hoge = { 0: "test1", 2:"test2", 3:"test3" }

Pythonの場合。

##配列のマージを利用する
hoge[len(hoge):] = ["test1"]
hoge[len(hoge):] = ["test2"]
hoge[len(hoge):] = ["test3"]
##hoge = { 0: "test1", 2:"test2", 3:"test3" }

##Appendメソッドを使う
hoge.append( "test1" )
hoge.append( "test2" )
hoge.append( "test3" )
##hoge = { 0: "test1", 2:"test2", 3:"test3" }

もちろん、append()関数を使ってもいい。ただ、JavaScriptでも配列にappendすることよりも言語構造で処理することが多いので、こっちの書式がよく使われるのかな?。PHPPerlでもappend()しないなぁ。

##注意) 配列のマージはappendより処理が重いよ。マニュアルによると、append推奨らしい。


ちなみにPHPの場合はとっても楽ちん

<?php

hoge[]= "test1";
hoge[]= "test2";
hoge[]= "test3";
//hoge = a:3:{i:0;s:5:"test1";i:1;s:5:"test2";i:2;s:5:"test3";}

PHPだと「appendしる」みたいなことは書いていなく、これが自然な記述ってこと。楽だねぇ。オブジェクトがIteratorインタフェース実装してればどこで使っても問題ないみたい。

 Javaだと、Collectionインタフェース実装したクラスにキャストして・・・それから・・・云々・・死ねる。Eclipseが発展してきた理由がわかる。補完無しだと腱鞘炎だ。

 PHPのserialize関数はJSONっぽい文字列を返してくれるが、若干仕様が異なるのでそのままJavaScriptでevalは出来ない。まぁJSONを返すパッケージがあるのでそれを使えばいいさ。