Pythonについて詳しく解説します
Pythonのループ処理の中で、特定回数の時だけ違う処理をしたいです!
…という方に向けて、そのコードをまとめました。
例えば、「100回実行する予定のFor文の中で、10回目ごとにある処理を行う」といった具合ですね。
今回、自分自身でそうしたスクリプトを書く機会があったので、処理の備忘録として、記録しておきます。
ご参考までにどうぞ。
目次
【コード】For文の繰り返し処理の中で、特定回数の時だけ特定の処理を行う方法
ということで、そのコードは以下の通りです。
for i in range(100): if i % 10 == 0 and i != 0: print("処理を行います") print(i)
上記のコードの場合、100回実施されるループの中で、10回目のループのタイミングで処理が行われます。
実際に実行してみるとこんな感じ。
ここではPrintをしているだけですが、もちろん好きな処理をここで実行できますし、それぞれ数字を変更してもらえれば、その通りの回数ごとに処理が実行できます。
【解説】どういう処理をしているのか
もう少し詳しくご説明しましょう。
if i % 10 == 0 and i != 0:
For分の中で実行しているこのIF文ですが、以下のような条件分岐になります。
- ①インデックス番号が10で割り切れる
- ②インデックス番号が0ではない
- 上記2つの条件が満たしたときに処理を行う
インデックス番号というのが、ここではループしている現在の回数を示す数字です。
それを10で割って、0で割り切れる時…つまり10回に1回のタイミングでのみ実行されます。
ただし、それだけだと0の時(初回の実行)も処理が行われてしまうので、インデックス番号が0の時は処理を除外しているわけです。
もし、初回も実行してOKなのであれば、このandの部分は不要です。
【応用編】ループ対象がリストの場合で、特定回数の時だけ特定の処理を行うには
先程の例ではRangeで回数を指定していますが、ループ対象がリスト(配列)だった場合は、enumerate関数を使うと、いい感じに同じような処理が実行出来ます。
for i,List in enumerate(List): if i % 10 == 0 and i != 0: print("処理を行います") #ここでListに対して処理を行う print(i)
上記コードを配列に対して実行すれば、同じように10回目のタイミングで処理が実行されます。
enumerate関数というのは、配列に対してループする際に、その配列のインデックス番号も一緒に取り出せるというものです。
通常、配列を対象にFor文を実行すると、iはインデックス番号ではなく配列の内容が取り出されます。
enumerateを使うと、インデックス番号も配列も一緒に取り出せるので、インデックス番号が10で割り切れるタイミングで処理を実行する、ということですね。
上記の場合、iがインデックス番号、Listがその番号に対応する配列の中身、ということになります。
配列の中身に対して、処理を行うことも可能です。
まとめ
以上、For文の繰り返し処理の中で、特定回数の時だけ特定の処理を行う方法でした。
当ブログでは、Pythonに関するちょっとしたコードをコピペでOKな状態で、シンプルに紹介しています。
興味があれば、こちらもあわせてご覧くださいませ!