から始まる範囲を反復処理します参照する必要がありますn + 1
?Python的な方法は、現在、1
私が範囲を反復処理したい場合ordinally私は二回1によって増加を指定する必要があること、珍しいことではありませんこれは、1から始まることを奇妙に思える:
1
での開始時に範囲。+ 1
の範囲の末尾に。
から始まる範囲を反復処理します参照する必要がありますn + 1
?Python的な方法は、現在、1
私が範囲を反復処理したい場合ordinally私は二回1によって増加を指定する必要があること、珍しいことではありませんこれは、1から始まることを奇妙に思える:
1
での開始時に範囲。+ 1
の範囲の末尾に。range(1, n+1)
は重複とは見なされませんが、別の番号に1
を変更すると面倒になることがあります。 0以外
range([start], stop[, step])
開始デフォルトで0に、ステップは、あなたが望むものは何でもすることができ、停止はあなたのである:ドキュメントから
for _ in (number+1 for number in range(5)):
print(_)
質問にうまく答えてくれましたが、実際にはrange(1、n + 1)から進んでいます –
私はそう言っていません。私はちょうど実際にはpythonicと思われ、共有したい、このクールな発電機のアイデアを持っていた。 –
私が言ったように、素敵な答え –
for i in range(n):
print(i+1)
この意志出力:
1
2
...
n
ループカウントを参照したいときに+1を使用しなければならないので、これはもっとクリーナーを意味しません。ループを定義するときに+1を使用するのではなく、複数回使用する必要があります。 – CAJE
range(1, n+1)
はそれを行うための一般的な方法ですが、あなたがそれを好きではない場合、あなたはあなたの関数を作成することができます。
def numbers(first_number, last_number, step=1):
return range(first_number, last_number+1, step)
for _ in numbers(1, 5):
print(_)
:
これは、発電機を使用して重複を削除します上限ですが、反復回数ではありません。だからあなたの上限が何であれ、nを宣言してください。それに1を加える必要はありません。
ない一般的な答えはなく、(5つまでたとえば、)非常に小さな範囲のために、私はリテラルでそれらを綴るために、それははるかに読みやすい見つける:
for _ in [1,2,3]:
print _
でもそれならば本当ですゼロから始まります。
なぜこれは「汚い」方法だと思いますか? – sobolevn
'n + 1'は一度評価されるので、これは'汚い '方法ではありません。オプションとして、 'range'パラメータとして' n + 1'が気に入らない場合は、前に評価して結果を変数に保存してから、この変数を 'range'呼び出しで使用してください。 –
@RafaelOsipov私はOPでいくつかの精緻化を編集しました。 – CAJE