1. ホーム
  2. パイソン

[解決済み】Pythonのfor rangeループをイテレータ変数無しで実装することは可能ですか?

2022-04-10 16:21:52

質問

を使用せずに、以下のようにすることは可能ですか? i ?

for i in range(some_number):
    # do something

N回だけ何かをしたいだけで、イテレータを必要としない場合。

どのように解決するのですか?

思いつく限りでは、ありません。

一番いいのは、こんな感じかな。

def loop(f,n):
    for i in xrange(n): f()

loop(lambda: <insert expression here>, 5)

しかし、余分な i という変数があります。

ここでは、オプションで _ という変数がありますが、これは実際には単なる別の変数です。

for _ in range(n):
    do_something()

なお _ は、対話型 Python セッションで返された最後の結果が割り当てられます。

>>> 1+2
3
>>> _
3

このため、私ならこのような使い方はしない。私はRyanの言うようなイディオムを知らないのです。インタープリターを混乱させる可能性があります。

>>> for _ in xrange(10): pass
...
>>> _
9
>>> 1+2
3
>>> _
9

そして、によると Pythonの文法 という変数名であれば、許容されます。

identifier ::= (letter|"_") (letter | digit | "_")*