ループ



プログラム内でループを使うのは以下の3パターン。C言語などになれていると1番や2番を使いたくなるかもしれないが、Pythonでは3番が適してるケースが多い。

  1. N回ループ
    一番基本的なタイプ
  2. 条件を満たすまでループ
    数値演算でよく使う
  3. リスト、タプル、ディクショナリの各要素に対してループ
    Webアプリに良く使う。最重要

1. N回ループ

Range関数でリストを作り、そのリストに対してforループを実行する。Webアプリではほとんど使わない。

0~4までループ

1
2
3
4
5
6
7
8
9
10
>>> range(5)
[0, 1, 2, 3, 4]
>>> for i in range(5):
...   print i
...
0
1
2
3
4

逆順ループ

range関数だけで処理しようとすると、開始値と終了値がわかり辛い。

1
2
3
4
5
6
7
8
>>> for i in range(4,-1,-1):
...   print i
...
4
3
2
1
0

range関数で作成したリストを反転する方が分かりやすい。(reverse関数は値を返さないので使用不可)

1
2
3
4
5
6
7
8
9
10
11
12
13
>>> for i in range(5)[::-1]:
...   print i
...
4
3
2
1
0
#参考
>>> print range(5)[::-1]
[4, 3, 2, 1, 0]
>>> print range(5).reverse()
None

2. 条件を満たすまでループ

1のforループは、実行回数が事前にわかっているような場合しか使えない。実行回数が事前に決定できない場合はwhileループを使う。

特定の文字列が入力されると実行を終了する

コマンドラインから入力した文字を2回繰り返して出力します。qを入力すると終了します。

1
2
3
4
5
6
7
8
9
10
>>> while True:
...   input = raw_input(">")
...   if(input == "q"): break
...   print input * 2
...
>test
testtest
>python
pythonpython
>q

break: ループから抜ける。
continue: ループの先頭に戻り、条件を満たしていればループを継続する。

2.1 while .. else 構文

whileのループ継続条件が偽になったときにelseブロック内が実行されます。breakでループを抜けた場合はelseブロック内は実行されません。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#elseが実行される例
>>> while x > 0:
...   x = x - 1
... else:
...   print x
...
0
#elseが実行されない例
>>> while x > 0:
...   x = x - 1
...   if x == 5:
...     break
... else:
...   print x
...

3. 集合の各要素に対してループ

Pythonでループを記述する場合、大半は集合の各要素に対してループすることになる。1のN回ループも、集合を一度つくってから、その集合の各要素に対してループを実行している。

シーケンスの各要素をループ

リスト(list)、タプル(tuple)、文字列などのシーケンスに対してのループです。

リストの各要素に対してループ
1
2
3
4
5
6
>>> for char in ["a", "b", "c"]:
...   char
...
'a'
'b'
'c'
タプルの各要素に対してループ
1
2
3
4
5
6
>>> for char in ("a", "b", "c"):
...   char
...
'a'
'b'
'c'
文字列に対してループ

文字列は文字の列(シーケンス: sequence)なので、文字列に対してもループできる。

1
2
3
4
5
6
>>> for char in "abc":
...   char
...
'a'
'b'
'c'

ディクショナリ(dict)の各要素をループ

keyの部分がインデックス変数に代入される。

1
2
3
4
5
6
7
8
9
>>> dict1 = {'a': u'あ', 'i':u'い', 'u':u'う', 'e':u'え', 'o':u'お'}
>>> for key in dict1:
...   print key + " -- " + dict1[key]
...
a -- あ
i -- い
u -- う
e -- え
o -- お

Share and Enjoy

  • Facebook
  • Twitter
  • Delicious
  • LinkedIn
  • StumbleUpon
  • Add to favorites
  • Email
  • RSS

Facebook comments:

comments

Leave a Reply


Get Adobe Flash player