wiki:PythonIntroFor

Version 1 (modified by sgk, 13 years ago) (diff)

--

Python:for(;;)が無い

Python情報 >> Pythonを学ぶ人に

C言語や、C言語に影響を受けた言語には、for文があります。初期設定、終了条件、更新処理を1行で指定してループをまわすことができますよね。

for (初期設定; 終了条件; 更新処理) {
  処理;
}

具体的な例を挙げると、こんな感じです。

for (int i = 0; i < 100; ++i)
  printf("%d\n", i);
for (int j = 0; j < 100; j += 2)
  printf("%d\n", j);

これをPythonで書くと、こんな感じです。

for i in range(100):
  print "%d\n" % i
for j in range(0, 100, 2):
  print "%d\n" % j

おや?

Pythonにもfor文があるんじゃん?

はい。for文はあるんですが、初期設定、終了条件、更新処理を指定することができないんです。 Pythonのfor文は、リストなど(シーケンス)を指定されて、その値を1個ずつ取り出す処理を行います。 C言語のfor文というよりも、シェル(単なるshとか、bashとか)のfor文に近いですね。 あるいは、PHP言語のforeachとか。 そういえば、Perlではforforeachも同じ意味で、C言語的な使い方にも、シーケンスの取り出しにも使えるんでしたね。

上記の例ではrange()を使いましたが、リストやタプルを指定することもできます。

>>> for x in (1, 2, 3):
...   print x
...
1
2
3
>>>

文字列を構成している文字を1個ずつ取り出すこともできます。

>>> for c in 'abc':
...   print c
...
a
b
c
>>>