大抵のプログラム言語で使えるfor文。もちろんPythonでも使える。
私は元々はC言語プログラマなので、Pythonのfor文のような形のものにはあまり慣れていない。もちろん使えはするけれど、再度確認。
基本的な文法は、
for ループ変数 in シーケンス変数:
ステートメント
...
else:
ステートメント
とこんな感じになる。ただ、ループ変数と書くのが適切かどうかはよく分からない。このループ変数には、inの後ろに書かれているシーケンス変数中の各要素が順次代入されてくる。全部の要素に対する実行が終わると、else節が実行される。else節はあってもなくても構わない。このelse節については以前にも書いた。では、実際にやってみる。
str = "This is for test!!"
print "str:"
for s in str:
print s,
出力は以下のようになる。
str:
T h i s i s f o r t e s t ! !
文字列strに格納された文字が一文字ずつ変数sに入るので、こんな感じの出力になる。ちなみに、print文のsの後ろに","を付けているのは改行させないためである。
シーケンス変数は、文字列でなくてももちろん構わない。シーケンス型であれば何でもいいので、リストとかタプルも指定できる。以下は、文字列を要素に持つリストを使った例。
str_list = ["This", "is", "for", "test!!"]
for s in str_list:
print s,
実行結果は以下。
This is for test!!
要素をタプルにしても同じように処理が可能。
タプルやリストを要素に持つシーケンスを処理することも可能。この場合にはループ変数を複数指定することも可能。ループ変数の書き方で、そのループ変数に何が入ってくるか変わるので、注意して記述する必要がある。以下はタプルを要素に持つリストを使った場合の例。
tuple_list = [("a","b"),("c","d")]
print "tuple_list 1:"
for x in tuple_list:
print x
print "tuple_list 2:"
for [x, y] in tuple_list:
print "%s ; %s" % (x, y)
print "tuple_list 3:"
for (x, y) in tuple_list:
print "%s ; %s" % (x, y)
print "tuple_list 4:"
for x, y in tuple_list:
print "%s ; %s" % (x, y)
出力結果は以下の通り。
tuple_list 1:
('a', 'b')
('c', 'd')
tuple_list 2:
a ; b
c ; d
tuple_list 3:
a ; b
c ; d
tuple_list 4:
a ; b
c ; d
tuple_list 1では、ループ変数を一つだけ指定しているので、リストに入ったタプルが一つずつ丸ごと要素として入ってきてループ処理が行われる。tuple_list 2以降では、ループ変数としてxとyの二つを渡しているので、リストに入っているタプルの要素がそれぞれxとyに渡されてくる。
tuple_list 3,tuple_list 4は、ループ変数の書き方を変えただけ。実行結果は同じになる。
forループを抜けるためのbreakと、ループの最初に戻るcontinueも使用可能。
clist = ["a","b","c","d","e"]
for s in clist:
if s=="b":
continue
if s=="d":
break
print s,
これの出力結果は以下のようになる。
a c
a,b,c,dの各文字がループ変数sに入って渡されてくるが、"b"が渡されたときにはcontinueが実行されるので、for文の先頭に戻って次のループに入るので、"b"は出力結果には含まれない。"d"が渡されてきたときには、breakが実行されるので、ループ終了。"e"は処理されないでループ終了。
もちろんforループのネストもできるので、色々な処理が可能になる。C言語なんかのforループとは異なるが、慣れると使いやすい。便利です。
トラックバックURL
コメントをどうぞ



