【for文】Pythonの繰り返し処理を実践してみた

pythonのfor文

この記事を読むと、pythonの基本的な繰り返し処理で右翼新聞を分類できるようになります。

繰り返し処理はプログラミングの真骨頂です。パソコンの原点は、「めんどくさいことをやらせる」ことだと私は思っています。「繰り返し処理」こそは人間にとって最もめんどくさいことに違いありません。それをPythonやらせれば効率的な生き方ができると私は信じています。

記事をお読みになる前に、pythonを動かす準備はできていますか?
まだの方はこちらの記事をもとに準備してみてください。

for文の書き方

最も基本的で使用頻度の高い、「for文」。

for 変数 in 繰り返す回数:

と記述し、その下に処理するプログラムを書けば、指定した回数プログラムを実行することができます。

これでは漠然としすぎなので、具体例を一つ紹介します。0~9の数字を出力するプログラムを書いてみましょう。
for文を使わなければ次のようになります。

print('0')
print('1')
print('2')
print('3')
print('4')
print('5')
print('6')
print('7')
print('8')
print('9')

これをfor文を使って記述すると、次のようになります。

for i in range(10):
    print(i)

そう、たったのこれだけで先ほどのような冗長な書き方を回避できるのです。
for i in range(10)とは、直訳すると「iの範囲が10の間」という意味になります。非常に直感的にプログラムを書けるのがpythonの特徴であることが分かると思います。

Pythonにおけるfor文の動作
For文はこのように作用しています。

実際に行われているのは、0から9までの10個の数字が、一つづつ順番にiという変数の中に格納されていきます。まず、iの中に0が格納され、インデント(字下げ)以降のプログラムが実行されます。次に、iの中に1が格納され、インデント以降のプログラムが実行されます。そして次は2、3、4、、、と順番に格納されていき、それぞれにインデント以降のプログラムが実行されます。

リストをfor文で回す

リストをfor文で回すのは、繰り返し処理の真骨頂です。リストはあらゆるオブジェクトを順に格納しているので、その数あるオブジェクトに対して、一気に処理を施したいときfor文は必須です。
例えば、オブジェクトが100個リストに格納されていた場合に、一つ一つに対して処理するのは大変な労力です。ところが、for文を使えば、非常に短く簡単にプログラムを記述することができます。

リストに関して詳しいことはこちらの記事で解説しております。

それでは実践してみましょう。pythonでリストを処理するとき、「for 変数 in 繰り返すモノ」の繰り返すモノのところをリストにします。例を見てみましょう。

#for文で回すリストを定義
news_paper = ['産経新聞-R','毎日新聞-L','日経新聞-R','朝日新聞-L','中日新聞-L','読売新聞-R']

#空のリストを定義
right_wing = []
left_wing = []

#ここからがfor文です。
for i in news_paper:
    if 'R' in i:
	right_wing.append(i[:4])
    if 'L' in i:
	left_wing.append(i[:4])
#ここでfor文は終わります。

#処理したリストを出力
#str()としているのは、文字列オブジェクトに変換するためです。		
print('右翼系の新聞は' + str(right_wing) + 'です')
print('左翼系の新聞は' + str(left_wing) + 'です')

#出力結果
#右翼系の新聞は[’産経新聞’,’日経新聞’,’読売新聞’]
#左翼系の新聞は[’毎日新聞’,’朝日新聞’,’中日新聞’]

まず、右翼系の新聞と左翼系の新聞がごっちゃに混ざったリストが定義されています。目的は、これを分類して新しいリストに格納することです。

合計6つの文字列オブジェクトがリストに格納されています。右翼系にはRが、左翼系にはLがついていますが、順番は全くランダムで一見するとみづらい状態です。

次に、分類するための新しいリストを2つ定義しました。

さあ、メインのfor文を解説しましょう。
iという変数にリストのオブジェクトである日本の新聞社が格納されて、それぞれに対してfor文の下の処理が施されます。
二つのif文が書いてあります。
もしも’R’という文字がiの中にあるならば、right_wingというリストに4文字目までを新たに格納する」というのが、

if 'R' in i:
  right_wing.append(i[:4])

の意味です。「append」はリストに追加することができるpythonのメソッドです。また、文字列の後ろに[:4]を付けると、文字列の4文字目までを抽出することができます。
まとめると、for文では次のような処理をしています。

  1. iという変数にnews_paperというリストのオブジェクトを一つづつ格納する
  2. iに格納された文字列に’R’という文字が含まれていたらright_wingというリストに最初の4文字だけを格納する
  3. iに格納された文字列に’L’という文字が含まれていたらleft_wingというリストに最初の4文字だけを格納する
  4. news_paperリストのすべてのオブジェクトに対して以上の操作をする

まとめ

for文は面倒な繰り返し処理をまとめて行ってくれます。
使い方を覚えていろいろな応用方法を考えたら、さらにPythonを楽しめることでしょう!!