重複の可能性:
Pythonのforループでインデックスにアクセスする
私は疑問に思います:Pythonには次のようなものがありますか?
for (i=0; i < length; i += 1){ .... }
もちろん、私は言うかもしれません
i = 0
for item in items:
#.....
i += 1
でも似たようなものがあるはずだと思いますfor(i = 0;...)
よね?
重複の可能性:
Pythonのforループでインデックスにアクセスする
私は疑問に思います:Pythonには次のようなものがありますか?
for (i=0; i < length; i += 1){ .... }
もちろん、私は言うかもしれません
i = 0
for item in items:
#.....
i += 1
でも似たようなものがあるはずだと思いますfor(i = 0;...)
よね?
enumerate()
関数を使用します:
for i, item in enumerate(items):
print i, item
または使用range()
:
for i in range(len(items)):
print i
(Python 2では、xrange()
代わりに使用します)。
range()
i
それ以外の手順も実行してみましょう1
。
>>> list(range(0, 5, 2))
[0, 2, 4]
>>> list(range(4, -1, -1))
[4, 3, 2, 1, 0]
ただし、通常、シーケンスにインデックスを使用する必要はありません。itertools
ライブラリやreversed()
関数ではありません; '特別な'インデックス値の範囲のほとんどのユースケースがカバーされています。
>>> menu = ['spam', 'ham', 'eggs', 'bacon', 'sausage', 'onions']
>>> # Reversed sequence
>>> for dish in reversed(menu):
... print(dish)
...
onions
sausage
bacon
eggs
ham
spam
>>> import itertools
>>> # Only every third
>>> for dish in itertools.islice(menu, None, None, 3):
... print(dish)
...
spam
bacon
>>> # In groups of 4
>>> for dish in itertools.izip_longest(*([iter(menu)] * 4)):
... print(dish)
...
('spam', 'ham', 'eggs', 'bacon')
('sausage', 'onions', None, None)
これは意図的な言語選択です。ほとんどの場合、低レベル言語では数値をループします。これらの数値は、シーケンス内のインデックスとして使用されます。実際に数値が必要な場合は、組み込み関数を使用する必要があります。これは、目的の 入力値range
でイテラブルを返します。range([start], end, [step])
enumerate
多くの場合、シーケンスのアイテムとそのインデックスの両方が必要です。この場合、代わりに builtn を使用する必要があります。
for index, letter in enumerate("word"):
print index, letter
そして最後に、C および派生言語 (Java、PHP、Javascript、C#、Objective C) では、for
Syntax は while ループに対する (非常に大雑把な) 構文シュガーにすぎません。Python で同じ while ループを記述できます。
代わりに:
for (start_expr, check_expr, incr_expr) { code_body}
あなたは:
start_expr
while check_expr:
code_body
incr_expr
まったく同じように機能します。
for i in range(length):
#do something