2016年7月7日木曜日

Python | for文での繰り返しを降順(逆順)で回す

for文では通常、指定範囲の中でインデックスの値の小さい方から大きい方へ向かって処理が進みますが、この方法で問題となるのが、スプレッドシートなどで条件に合う行を削除する場合です。

スプレッドシートで1行削除すると行の位置が1つ上にずれてしまい、本来削除したい行とはずれが生じてしまいます。

それを解決するのが、スプレッドシートの下のほうの行から上に向かって行の削除を実行していく方法になります。この方法のスクリプトはこちらを参考にしてください。PythonではなくGoogle Apps Scriptで書いたものですが、イメージは伝わるかと思います。

ここで問題となるのが、Google Apps Script(JavaScript)のfor文で"--i"、つまり i = i -1 で表現している、降順でのループの回し方を、Pythonの文法でどう表現するのか、ということです。

結論としては、

for i in range(1, 10):

のような書き方のforループを逆順で回す場合、

for i in reversed(range(1, 10)):

とします。

SyntaxHighlighter