だから言いましょう
start = 10
end = 30
今、私はからstart
に行くループが必要ですend
私はこのようなことを考えていました:
for i in [start..end]
print i
しかし、それは完全には機能しません。これを行うためのクリーンな方法はありますか?
だから言いましょう
start = 10
end = 30
今、私はからstart
に行くループが必要ですend
私はこのようなことを考えていました:
for i in [start..end]
print i
しかし、それは完全には機能しません。これを行うためのクリーンな方法はありますか?
for i in range(start, end+1):
print i
10から30までの出力が得られます。
注:値に追加+1
した理由は、 range()関数がハーフクローズ間隔を指定しているためです。これは、最初の値が含まれているが、最後の値は含まれていないことを意味します。end
つまり、
range(5, 10)
あなたにのリストを与えるだろう
5, 6, 7, 8, 9
ただし、10は含まれません。
range()やその他のホストのステップサイズを指定することもできます。ドキュメントを参照してください。
最後に、Python 2.xを使用している場合は、の代わりにxrange()range()
を使用することもできますが、Python 3.xでは使用できるのはrange()
それだけなので、ここで使用しました。
との違いに興味がある場合range()
(xrange()
質問に直接関係するわけではありませんが)、次の2つのSO質問から始めるとよいでしょう。Python2.Xのrange関数とxrange関数の違いは何ですか。そして、あなたは常にrange()よりもxrange()を好むべきですか?
for i in xrange(start, end + 1):
print i
Python 2.xではなく、Python 3を使用している場合は、(@ Levonが示唆するように)代わりにを使用range
してください。xrange
for i in xrange(10, 31):
# something
細かいマニュアルを見てください、それはあなたのためにそれを説明します...終点は「までですが、含まない」ことに注意してください-それはハーフクローズドレンジと呼ばれます。
また、他の人がPython 3.xで言及しているように、-はジェネレーターであり、Python2.xrange()
のようにを作成しません。list
ただし、2to3ツールは自動的にxrange
をrange
ステートメントに変換します。
2.xではrange
、スライスなどが可能な物理リストが生成されました。しかし、3.xではlist(range(1000))
、2.xでの動作を具体化する場合は、書き込む必要があります。
あなたが探していますrange()
range(start,end) #end not inclusive
range(end) # starts with 0,end not inclusive
range(start, end, step) #increments of step, default = 1
例えば、
for i in range(100,150):
print i
注: Py3k +にはrange()のみがxrange()
あり、以前のバージョンにはとがあります。どちらもジェネレーターであることrange()
を除いて類似していますが、反復可能な数値のリストを作成します。xrange()
range()
リストの各要素を繰り返して印刷することができます。次のことを試してください。
for i in range(start,end+1):
print i
range から返された結果のリストを印刷することにより、数値の全範囲を印刷することもできます。
print(range(start, end+1))