0

だから言いましょう

start = 10
end = 30

今、私はからstartに行くループが必要ですend

私はこのようなことを考えていました:

for i in [start..end]
  print i

しかし、それは完全には機能しません。これを行うためのクリーンな方法はありますか?

4

6 に答える 6

7
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()を好むべきですか?

于 2012-07-12T03:45:00.167 に答える
2
for i in xrange(start, end + 1):
    print i

Python 2.xではなく、Python 3を使用している場合は、(@ Levonが示唆するように)代わりにを使用rangeしてください。xrange

于 2012-07-12T03:45:33.037 に答える
2
for i in xrange(10, 31):
   # something

細かいマニュアルを見てください、それはあなたのためにそれを説明します...終点は「までですが、含まない」ことに注意してください-それはハーフクローズドレンジと呼ばれます。

また、他の人がPython 3.xで言及しているように、-はジェネレーターであり、Python2.xrange()のようにを作成しません。listただし、2to3ツールは自動的にxrangerangeステートメントに変換します。

2.xではrange、スライスなどが可能な物理リストが生成されました。しかし、3.xではlist(range(1000))、2.xでの動作を具体化する場合は、書き込む必要があります。

于 2012-07-12T03:45:58.560 に答える
1

あなたが探しています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()

于 2012-07-12T03:47:18.067 に答える
1

リストの各要素を繰り返して印刷することができます。次のことを試してください。

for i in range(start,end+1):
print i
于 2012-07-12T03:47:47.893 に答える
1

range から返された結果のリストを印刷することにより、数値の全範囲を印刷することもできます。

print(range(start, end+1))
于 2012-07-12T13:15:50.730 に答える