1ヶ月でWebデザイン・プログラミングスキルをオーダーメイドのカリキュラムで学べるスクール、それがWebCamp。

「数億規模スタートアップのCTO講師」と「エンジニアキャリア専門のポテパン」が贈る、実践型Rubyスクール。

【Python入門】foreachをPythonで使ってみよう

【Python入門】
Pocket

foreach とは、スクリプト言語のなかでよく使われている繰り返し文です。配列から中身を取り出して、繰り返し処理したいときにとてもよく使われます。
スクリプト言語を使うときは、たいてい一律にまとまった処理をさせたいことが多いので、繰り返し文をマスターする事が出来れば、作業性も大幅アップ間違いなしです。

まず最初に、スクリプト言語の代表格であるperl でちょっとした foreach 文を書いてみましょう。

foreach文のなかで、 sports という配列の1番目からアクセスして、一番最後の要素にたどり着くまで、要素の表示をひたすら実行しています。

python でforeach をやってみよう

それでは、さっそく python で foreach にトライしてみましょう!
と言ったものの、実はpython に foreach という名の関数がありません。
ではどうすればいいかというと、for 文がその代理を果たしてくれます。

では具体的に書いてみましょう。

このように、foreach とほとんど同じような記述で、python でも繰り返し文を実行する事が出来ますね。

For文のTips: foreach の感覚でさらに便利な使い方をマスター

配列の中身を逆順に表示させたい

これまでのperl などでのスクリプト言語で配列の中身を逆順に表示させようと思うと、
・一度配列を逆順に詰め直してそれを表示する、
・配列の番号を取得してそれを後ろの番号からアクセスする、
といった方法がありますが色々と手間ですよね。このような方法をとらずに、簡単に行う事が出来る例を示しましょう。

このように読み込ませる配列に reversed() をつけるだけで簡単に逆順に出来ます。

配列の中身を昇順に表示させたい

ばらばらの数字が入った配列を昇順に表示させたいと思う事があるでしょう。
そのときは以下のようにしてみましょう。

このようにsorted 関数を用いる事で簡単に並び替える事が出来ます。

配列の中身を降順に表示させたい

先ほどの例では、昇順に表示させていました。ただ場合によっては、逆に降順に並び替えたいということもあるでしょう。
その場合は以下のように書く事が出来ます。

これはC言語チックな感じですね。range関数を使って、アクセスする配列の要素番号を決定するやりかたです。正しいやり方ですが、少しめんどくさいですよね。
今回で学んだように foreach チックに楽に進めてみたいという方は次のやり方を試してみてはどうでしょう。

・enumerate 関数を使った方法

さっきのrange関数を使ったのとは違って、どこからどこまで配列を表示する、といった記述をすることなく、さっぱりした記述で書けるのがいいですね。

2つの配列をまとめて、表示したい
配列が2つあったときに、その配列をまとめて処理したいときは、zip関数を使うと便利です。
例は以下のような感じです。

ここでミソなのは、配列の要素の個数が違っていても、短い方に自動的に合わせて処理してくれるのがいいですね。

おわりに

for文を foreach のように使うやり方を紹介しました。
for文を書くときに、書き方次第でとても簡単に書けることができるとわかったと思います。
知っているのと知っていないとでは、個人的には天と地の差があるように思います。

また今回の例とはとても簡単でしたが、実際の場面でプログラムを書いていくと複雑奇怪なものになって行きがちです。
そのときは完成したと思っても、よくよく見返すと間違っていたり、自分でも何を書いたのかわからなくなったりします。
今回学んだような書き方を習得できれば、少しでも簡潔に記述できるのでその後のデバッグがとても楽になると思います。

投稿者:プロスタ編集部

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

初心者がプログラミングで挫折しない学習方法を無料動画で公開中。オンラインに特化したプログラミングスクール「TechAcademy(テックアカデミー)」が解説。

この記事が気に入ったら
いいね!しよう

プロスタの最新情報をお届けします

あわせて読みたい

関連記事

おすすめスクール

システムアーキテクチュアナレッジ

システムアーキテクチュアナレッジ システムアーキテクチュアナレッジでは、ITスクールとしては珍しく正規雇用かつ現役のエンジニアが講師を務めています。「責任を持ったIT教育」をテーマに、未経験者をプロフェッショナルに育てます。
ページ上部へ戻る