Pythonでは、いくつかのアクションを複数回繰り返すための2つの素晴らしい方法があります。1つはwhile
ループで、もう1つはfor
ループです。 2つの簡単なコードを見てみましょう。
for i in range(n):
do_sth()
そしてもう一つ:
i = 0
while i < n:
do_sth()
i += 1
私の質問は、どちらが優れているかです。もちろん、ドキュメントの例やインターネット上で見つけることができるさまざまなコードで非常に一般的な最初のものは、はるかにエレガントで短いですが、一方でループするだけの完全に役に立たない整数のリストを作成しますそれら。特に大量の繰り返しに関する限り、それはメモリの浪費ではありませんか?
だからあなたはどう思いますか、どちらの方が良いですか?
しかし、一方で、それらをループするためだけに、完全に役に立たない整数のリストを作成します。特に大量の繰り返しに関する限り、それはメモリの浪費ではありませんか?
それがxrange(n)
の目的です。数値のリストを作成せず、代わりに反復子オブジェクトを提供します。
Python 3、xrange()
はrange()
に名前が変更されました。リストが必要な場合は、list(range(n))
で明示的に要求する必要があります。
xrange
オブジェクトを作成する必要がないため、これはint
(およびwhileループ)よりも軽量です。また、Python2とPython3でも同等に機能します。
from itertools import repeat
for i in repeat(None, 10):
do_sth()
ほとんどのプログラミング言語の基本的な違いは、unless予期しないことが発生するということですfor
ループは常に繰り返しn
回、while
ループで終了し、0 times, 1, more or even forever
、各ループの開始時に常に真であり、ループの終了時に常に偽である特定の条件に応じて、(完全性のためにdo ... while
ループ(またはrepeat until
)、それを持つ言語の場合、常に少なくとも1回実行され、最初の実行時の条件は保証されません)。
だからあなたの質問への答えは 'それはあなたが何をしようとしているかに依存します'!