2015-10-22 7 views
5

から始まる範囲を反復処理します参照する必要がありますn + 1Python的な方法は、現在、1

私が範囲を反復処理したい場合ordinally私は二回1によって増加を指定する必要があること、珍しいことではありませんこれは、1から始まることを奇妙に思える:

  1. 1での開始時に範囲。
  2. + 1の範囲の末尾に。
+1

なぜこれは「汚い」方法だと思いますか? – sobolevn

+1

'n + 1'は一度評価されるので、これは'汚い '方法ではありません。オプションとして、 'range'パラメータとして' n + 1'が気に入らない場合は、前に評価して結果を変数に保存してから、この変数を 'range'呼び出しで使用してください。 –

+0

@RafaelOsipov私はOPでいくつかの精緻化を編集しました。 – CAJE

答えて

1

range(1, n+1)は重複とは見なされませんが、別の番号に1を変更すると面倒になることがあります。 0以外

range([start], stop[, step]) 

開始デフォルトで0に、ステップは、あなたが望むものは何でもすることができ、停止はあなたのである:ドキュメントから

for _ in (number+1 for number in range(5)): 
    print(_) 
+0

質問にうまく答えてくれましたが、実際にはrange(1、n + 1)から進んでいます –

+0

私はそう言っていません。私はちょうど実際にはpythonicと思われ、共有したい、このクールな発電機のアイデアを持っていた。 –

+0

私が言ったように、素敵な答え –

0
for i in range(n): 
    print(i+1) 

この意志出力:

1 
2 
... 
n  
+1

ループカウントを参照したいときに+1を使用しなければならないので、これはもっとクリーナーを意味しません。ループを定義するときに+1を使用するのではなく、複数回使用する必要があります。 – CAJE

1

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(_) 
1

これは、発電機を使用して重複を削除します上限ですが、反復回数ではありません。だからあなたの上限が何であれ、nを宣言してください。それに1を加える必要はありません。

1

ない一般的な答えはなく、(5つまでたとえば、)非常に小さな範囲のために、私はリテラルでそれらを綴るために、それははるかに読みやすい見つける:

for _ in [1,2,3]: 
    print _ 

でもそれならば本当ですゼロから始まります。

関連する問題