Python入門トップページ


目次

  1. プログラミング言語
  2. Anaconda - Jupyter Notebook / JupyterLab の環境設定
  3. Python の基礎
  4. リスト,タプル,辞書,集合
  5. 再び Jupyter Notebook の操作
  6. Python の制御構文
    1. コメント
    2. if による条件分岐
    3. while による繰り返し
    4. for による繰り返し
    5. range による数値シーケンス
    6. enumerate による繰り返し
    7. zip による繰り返し
    8. match による条件分岐
  7. 関数
  8. 便利な関数など
  9. リストの内包表記
  10. 多次元リスト
  11. クラス
  12. 演習問題
  13. 雑多な情報

Python の基礎

Python の制御構文

for による繰り返し

リストなどの要素一つひとつに対して何らかの処理をする場合は 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

目次に戻る