現在、AnacondaでPythonのプログラミングをしておりますが、非常に処理が遅い...
Pythonのモジュールをうまく使って速いプログラムにしなければならず、孤軍奮闘しております。
for文でループ範囲や刻み幅を設定するときに、C++の場合
for( int i = 0 ; i < 100 ; i += 2){
みたいな感じで設定し、同様にして、刻み幅を小数にしたい場合は、
for( double i = 0 ; i < 100 ; i += 0.1){
みたいにしますよね。
ここをPythonでは、
for i in range(0,100,2) :
とします。 そして、刻み幅小数にしたい場合は、
for i in [ 0.1*x for x in range( 1000 ) ] :
という風に書きます。これをリスト内包表記といいます。
基本的に、for文は範囲が分かっているときに使います。
この場合であれば、最大値が100と分かっています。
今回挙げた例であれば、小数で刻むことができるのですが、range関数ではループ範囲の上限値に小数が使えません。
なので、そのときはwhileループを使いましょう。
while文は、基本的にループ上限値が定まっていないときに使います。
例えば、変数A,Bの値において
A > B
が成り立つ場合に限ってループを続けるような場合、
while A > B :
とします。while 文ですと、上記の例におけるAを初期値(ループ回数に応じて刻み幅分増加する変数)、Bを上限値にすればよいので、小数が簡単に使えます。
例えば、「初期値:0、上限値:100、刻み幅:0.2」のときは、
A = 0
B = 100
while A < B:
A += 0.2
とできます。 上限値に小数を使いたい場合でもB=100にしている部分を
B = 0.00001
のようにすればいいだけなので、簡単ですね。どうしても上限値も刻み幅も
小数点刻みにしたいけど、色々調べた小数刻みの仕方がわからないという人は、
この方法を使ったほうが手っ取り早いと思います。
質問や意見などございましたら、コメントにお願いします。
それでは。