私はPythonには比較的新しいので、HackerRankの問題のためにいくつかのコードを最適化しようとしています。 range
(つまりリストを生成する)を使うのは、反復する単一の変数を持つwhile
ループを使うよりも速いことが分かりました。再利用すれば範囲結果をキャッシュする必要がありますか?
range
関数の結果をキャッシュする方が早いのかどうかは、コードの後半で同じシーケンスを反復処理するとうまくいきます。たとえば:
は、この高速です:
ten = 10
zeroToTen = range(ten)
sum = 0
for x in zeroToTen:
sum += x
product = 1
for y in zeroToTen:
product *= y
または私はちょうどrange
たびに思い出す必要があります。
ten = 10
sum = 0
for x in range(10):
sum += x
product = 1
for y in range(10):
product *= y
'range'はシーケンスを返します。シーケンスは複数回使用できます。' r = range(5); print(リスト(r)、リスト(r)) '。 –
@FranciscoCouzoは、 'range'イテレータ関数が(ファイルオブジェクトと異なり)それ自身をリセットする方法に興味があります。私は自分の投稿を編集した、私は間違いを言っていた。 –