python: if elseでfor文内の処理を判断する一例
備忘録です。
for文内に複数の式があって、その式を上から実行していく途中で条件を満たさなくなったためfor文から抜けて式を実行しないようにする(ちょっと説明がややこしい)一例です。
if elseを一文の形で式の後に書いて条件分岐させる
今回の条件としては下記のような集合があったとして
{1, 2, 7, 8, 9}
この集合から二回、最小と最大の数値を削除するという要件があり、これをfor文で回そうとしました。つまり、
- 1回目:{1, 2, 7, 8, 9}から最小{1}、最大{9}を削除→{2, 7, 8}
- 2回目:{2, 7, 8}から最小{2}、最大{8}を削除→{7}
- 残りをリターン:{7}
という作業をする感じです。
しかし、上記だともし、与えられた集合が{8, 9, 7}で、
同様に2度最小と最大を削除しようとすると
- 1回目:{8, 9, 7}から最小{7}、最大{9}を削除→{8}
- 2回目:{8}から最小{8}を削除→この時点で空 {} になる。
そのため、2回目の最大値の削除ができなくなりエラーとなる。
なので、{}になった時点でfor文を抜ける、もしくは処理をしないようにする必要がありました。
最終的に、最小、最大を削除する際にif elseを付け加えてそれぞれ、処理をするのかしないのか判断させました。
もっといい方法ありそうだけど。ひとまず問題なく処理可能です。