PC引っ越し・ゲーム移行ならTodo PCTransで十分!

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な状態で、シンプルに紹介しています。

興味があれば、こちらもあわせてご覧くださいませ!

関連記事一覧