基本文法をマスターするぞ!!その7

えっと、昨日ちょっとゲームを創ってみたんだけど、まだ基本文法をマスターできてないので、今日も勉強しようと思います。
今日はね〜〜〜forループからだね。今日も「はじめてのPython」から一部引用しています。

じゃっ始めようかな。

forループ

Pythonでは、シーケンスの個々の要素に1つずつ順にアクセスするようなコードを書く際、一般にforステートメント(forループ)を使用するんだって。シーケンス(シーケンスオブジェクト)っていうのは、文字列、リスト、タプルとかだったね♪(ちゃんと覚えてたw)
forステートメントの形式

for <target> in <object>:    #指定オブジェクトの要素をターゲットに代入
    <statements>             #ターゲットを使用して同じ処理を繰り返す
else:
    <statements>             #breakが実行された場合には実行されない

pythonのforループでは、指定されたオブジェクトの構成要素が、代入ターゲットに一つずつ順に代入されていく。

ターゲットに代入された要素一つ一つについて、ボディ部分にかかれた処理が行われる。

なるほどね〜一つ一つ取り出していくわけか。分かった分かった♪♪

break,continueも使えるよ

for <target> in <object>:    #指定オブジェクトの要素をターゲットに代入
    <statements>
    if <test>:break          #ループを即終了
    if <test>:continue       #ループの先頭に即戻る
else:
    <statements>             #breakが実行された場合には実行されない

使用例

>>> for x in ['spam','ham','eggs']:
	print x,

spam ham eggs
>>> sum = 0
>>> for i in range(10):
	sum += i
	print i,
	
0 1 2 3 4 5 6 7 8 9

ちょっと複雑な例

>>> items = ["aaa",111,(4,5),2.01]              #リストの代入
>>> tests = [(4,5),3.14]                        #リストの代入
>>> for key in tests:                           #testsのためのループ
	for item in items:           #itemsのためのループ
		if item == key:                 #要素が一致するかの確認
			print key, "was found"
			break
	else:
		print key, "not found!"
		
(4, 5) was found
3.14 not found!

このコード、まず初めに、items,testsという2つの変数にリストが代入され、後者のリストの2つの要素それぞれについて、同じものが前者のリストに見つかるかが確認される。そして、見つかった場合にも、見つからなかった場合にもい、その旨が知らせられる。でもこのコードは下記のように簡単に書くことも出来るんだよ♪♪

>>> for key in tests:
	if key in items:
		print key,"was found"
	else:
		print key,"not found!"

(4, 5) was found
3.14 not found!

このコードの方が簡単だね♪

>>> seq1 = "spam"
>>> seq2 = "scam"
>>> res = []                  #空のリストを作成
>>> for x in seq1:            #一方のシーケンスへのアクセス
	if x in seq2:     #もう一方のシーケンスに同じ要素があるか?
		res.append(x) #共通する要素をリストの末尾に追加

>>> res
['s', 'a', 'm']

プログラミングの幅が広がった気がする♪もっと勉強するぞ!!