今回からPythonの基礎メモのタイトルを変更。この方がパッと見分かり易いかなと。
今回はループ処理に付いて。2があるかもしれないからとりあえず1なんだお!!
あ、そういえば意外と電子殻のK殻の名前の由来って知られていないみたいだね。大卒の人何人かと話をしたけれど、全然知らないのが普通みたい。マニアックすぎるのかな。なんでK殻から始まるかというと・・・Kから始めておけば、もっと小さい殻が在ったとしても対応できるから!!
ま、1より小さいのはこの場合ないから、1でいいんだお!!
また脱線したけれど・・・
Pythonでループ処理をするなら、PythonのSyntax、ビルトイン関数と仲良くなろう!!
って話です。
まず最初に、C言語でも結構言われている事だけれど、whileではなくforを使おう。と言うことだ。
Pythonでは、forを使った方が、簡潔にかける場合が多いのと、処理速度も向上するからだ。
ちなみに、C言語の場合はwhileでかける事はforで必ずかけるのと、forで最初から書いておいた方が後で修正する場合、変更が少ないからなどの理由がある。
シンプルなforループを見てみよう。
L1 = [1,2,3,4]
for token in L1:
print token,
1 2 3 4
となる。これは、Java,Perl使いにはお馴染みで、PHPではforeachに当たる。
さて、オブジェクト指向プログラム言語に見られる傾向だが、Cなどのforと違って、自分で参照用変数を作る必要性がない。内部で勝手にイテレータを作って処理してくれるわけだ。さて、こういう言語でいつも気になるのが複数のオブジェクトに対するループ処理だ。
L1 = [1,2,3,4]
L2 = [5,6,7,8]
これを同時に出力したい。この場合、こんなビルトイン関数を使うと便利だ。
zip( L1, L2 )
[(1, 5), (2, 6), (3, 7), (4, 8)]
これは、各引数の要素をタプルにして、更にそれをリストとして返してくれる関数だ。
これを使うと・・・
for (t1, t2) in zip( L1, L2 ):
print t1, t2
1 5
2 6
3 7
4 8
となるわけだ。素晴らしい!!
また、一個のオブジェクトに対するループの場合は
L1 = [1,2,3,4,5,6,7,8,9.10]
for token in range( 0, len(L1), 2 ):
print token,
0 2 4 6 8
といった感じの事もできる。rangeは、指定した範囲の数列を返す関数といった感じだ。
また、何もforとwhileだけがループだけじゃない。
L1 = [1, 2, 3, 4]
if 3 in L1:
print ‘Found Three’
Found Three
これは、リストの中に3があれば、ifのブロックが実行される。という処理だ。in を使う事によって自動的にイテレータを使って各要素に対して==比較をしてくれているのだ。
もっともっとPython弄っていると面白い事ができるのがたくさんあるけれど、とりあえずループに関してはこんな感じ。
詳しく勉強したい人はこちらでもどうぞ。
0 Comments.