リストなどの要素一つひとつに対して何らかの処理をする場合は for
を使えば良いでしょう.
リストは順に要素を取り出すことができます.要素の数がいくつあるかは気にする必要がない.次のコードでは,リスト names
の要素を一つ取り出して name
に代入,for
の中身の処理(3回繰り返して表示する処理)をすべての要素について繰り返しています.
names = ['Tanaka', 'Sato', 'Watanabe', 'Takahashi']
for name in names:
print(name * 3)
TanakaTanakaTanaka SatoSatoSato WatanabeWatanabeWatanabe TakahashiTakahashiTakahashi
辞書に対して同じ書き方をした場合は,キーを取り出すことができます.なお,以下の幾つかの例で,(Python 3.6 以前では)表示される順は同じでない可能性がありますが,気にする必要はない.(Python 3.7 から辞書のキーが順序を持つようになりました.)
novels = {
"genji" : "どの天皇様の御代であったか、女御とか更衣とかいわれる後宮がおおぜいいた中に、最上の貴族出身ではないが深い御愛寵を得ている人があった。",
"bocchan" : "親譲の無鉄砲で小供の時から損ばかりしている。",
"meros" : "メロスは激怒した。必ず、かの邪智暴虐の王を除かなければならぬと決意した。",
"rashomon" : "ある日の暮方の事である。一人の下人が、羅生門の下で雨やみを待っていた。",
}
for novel in novels:
print(novel)
meros genji bocchan rashomon
結果は上と同じですが,明示的に keys()
を指定するとよりわかりやすい.
for novel in novels.keys():
print(novel)
bocchan rashomon meros genji
一方で辞書の値を取り出したい場合は,values()
を使う.
for value in novels.values():
print(value)
メロスは激怒した。必ず、かの邪智暴虐の王を除かなければならぬと決意した。 どの天皇様の御代であったか、女御とか更衣とかいわれる後宮がおおぜいいた中に、最上の貴族出身ではないが深い御愛寵を得ている人があった。 親譲の無鉄砲で小供の時から損ばかりしている。 ある日の暮方の事である。一人の下人が、羅生門の下で雨やみを待っていた。
さらに,キーと値の両方を取り出したい場合は items()
を使い,キーと値をそれぞれ代入する変数を指定します.
for key, value in novels.items():
print(key, ' ---> ', value)
bocchan ---> 親譲の無鉄砲で小供の時から損ばかりしている。 rashomon ---> ある日の暮方の事である。一人の下人が、羅生門の下で雨やみを待っていた。 meros ---> メロスは激怒した。必ず、かの邪智暴虐の王を除かなければならぬと決意した。 genji ---> どの天皇様の御代であったか、女御とか更衣とかいわれる後宮がおおぜいいた中に、最上の貴族出身ではないが深い御愛寵を得ている人があった。
リストに格納された値の合計を取得したい場合は,繰り返しを使うと良いでしょう.ここで,total
をゼロで初期化していることに注意しよう.
# 合計を計算する
scores = [30, 60, 55, 40]
total = 0
for score in scores:
total += score
print(total)
185
最大値を求める場合も繰り返しを使うと良いでしょう.ここでは,mx
をゼロで初期化しているが,負の値が含まれるような場合には,-999 などで初期化する必要があるので注意します.
# 最大値を求める
scores = [30, 60, 55, 40]
mx = 0
for score in scores:
if score > mx:
mx = score
print(mx)
60
文字列に対して1文字ずつ取り出して何らかの処理を行いたいような場合にも for
で簡単に記述できます.
msg = 'Kobe'
for s in msg:
print(s)
K o b e
C 言語などの他の言語を先に習得した場合は,次のように書きたくなるかもしれません.もちろん次のコードでも動作しますが,Python では上の簡潔なコードで動作します.
msg = 'Kobe'
for i in range(len(msg)):
print(msg[i])
K o b e