Pythonのxrangeとrangeの使い方

5319 ワード

Pythonでは、リストを構築したり、整数サイクルを構築したりするのに非常に簡単な方法が2つあります.この2つの方法はxrangeとrangeです.推測したかもしれません.
次に、両者の違いについてお話しします.
始める前に、xrangeとrangeの違いについて議論しましょう.ほとんどの場合、xrangeとrangeの機能は完全に同じであり、反復可能な整数リストを提供します.唯一の違いはrangeがリストオブジェクトを返し、xrangeがxrangeオブジェクトを返すことです.これはどういう意味ですか.これはいい問題だ.これは、xrangeが実行時にrangeのように静的なリストを生成しないことを意味します.yieldのような特殊な技術を呼び出すことで、generatorsオブジェクトとともに使用される値を作成します.generatorsとyieldのキーワードについてもっと知りたいなら、この文章を読んでください.Python generators and the yield keywordです.では、上記の意味は何ですか.つまり、巨大なリストを生成する必要がある場合、例えば10億ドルでxrangeを使うのは良い方法です.特に、メモリの小さいシステムでコードを走る必要がある場合、例えば携帯電話の上でrangeはこの整数配列を作成するのに多くのメモリを費やします.それはMemoryErrorやプログラムのクラッシュを引き起こすかもしれません.前述したように、リストを複数回使用する必要がある場合はrangeを使用するほうが良いかもしれません.これは、xrangeがインデックスを削除するたびに一連の整数オブジェクトを反復して生成する必要があるためです.rangeは静的に生成されるので、一度だけ作成する必要があります.さあ、干物が来ました.
Pythonのrangeとxrangeの使い方
では、rangeとxrangeをどう使うのでしょうか.次の例を示します.
>>> for i in xrange(10):
...     print(i)
...
0
1
2
3
4
5
6
7
8
9

はい、例は簡単ですが十分です.上のxrangeの使い方はxrangeにも当てはまりますが、個人的にはxrangeのほうがいいと思います.セクシーな「x」が前にあるからかもしれません.説明しましょう.xrangeとrangeは全部で3つのパラメータを受け入れることができますが、そのうちの2つはオプションで、これらのパラメータはそれぞれ「start」、「stop」と「step」で、「start」はあなたのリストの始まりを表し、「stop」はあなたのリストの終了数を指し、「step」はあなたのリスト要素の毎回の増分を指します.
Pythonのxrangeとrangeで奇数を生成
私は奇数しか必要ありません.そこにはいくつかの方法があります.
>>> for i in xrange(1, 10, 2):
...     print(i)
...
1
3
5
7
9

pythonの最初の要素は1で、最後の要素は10で、各要素の増分は2で、本当に簡単です.
Pythonのxrangeとrangeで負の数を生成
負の数のリストをどのように生成すればいいか考えてみましょう.簡単な例を次に示します.
>>> for i in xrange(-1, -10, -1):
...     print(i)
...
-1
-2
-3
-4
-5
-6
-7
-8
-9

「start」、「stop」、「step」を変更して負数を生成します.負数リストを生成するには、xrange(-10)のような方法では目的を達成できません.rangeとxrangeのデフォルトの「step」は1です.
Pythonでrangeとxrangeを使用する他の例
次に、100~120の偶数を生成する例を示します.
>>> for i in xrange(100, 120, 2):
...     print(i)
...
100
102
104
106
108
110
112
114
116
118

これがrangeとxrangeです.この2つの関数の詳細については、pythonのxrangeとrangeドキュメントを参照してください.
入力された「start」が「stop」より大きい場合、空のリストが返され、「step」が「stop」と「start」の差より大きい場合、「stop」の値は「step」に大きくなり、返されたリストには「start」の要素しか含まれません.次の例では、
>>> for i in xrange(70, 60):
...     print(i)
...
# Nothing is printed
>>> for i in xrange(10, 60, 70):
...     print(i)
...
10

pythonのxrangeを破棄
もっと言えばpython 3.xではxrange関数はもう存在しませんpython 3.xのrangeはpython 2です.xのxrange.そのため、コードの移植性のためにrangeを継続する必要があるかもしれません.もちろん、python 2を使用してpython 3ツールを回転してコードを変換することもできますが、これは追加の面倒をもたらします.xrangeが削除されたのは、人々がそれをよりよく使用したいためであり、この影響は無視できるからだ.つまりpython 3.xのrangeはpython 2です.xのxrange.PEPドキュメントでxrangeを削除する理由を見つけることができます.よし、ここまでで終わりだ、騒年.オリジナルの英語ドキュメントを参照:http://pythoncentral.io/how-to-use-pythons-xrange-and-range/本明細書の固定接続:http://blog.dreamchasinger.cn/?p=606マイブログへようこそ:http://blog.dreamchasinger.cn/