Pythonのループ文攻略1 for in文で何ができる?

いきなりですが、Pythonのfor in文はどんな時に使いますか?

リストの要素を全て取り出して何らか処理する時と答えるかもしれません。
こんな感じでしょう。

例1

nums = [10, 20, 30]

for num in nums:
    print(f'値は{num}')

表示結果

値は10
値は20
値は30

次のようにも書くこともできます。
for in文とrange()関数を併用すると整数のシーケンスを作ることができます。

これは他の言語のfor文と同等のものです。

例2

nums = [10, 20, 30]

for n in range(len(nums)):
    print(f'{n + 1}番目の値は{nums[n]}')

表示結果

1番目の値は10
2番目の値は20
3番目の値は30

例2のコードですが、実は例1のコードでもちょっと手を加えると同じことができます。

例3

nums = [10, 20, 30]

for i, num in enumerate(nums, 1):
    print(f'{i}番目の値は{num}')

enumerate()を使ったコードの方が簡潔に書けますので積極的に活用すべきです。
またenumerate()には第2引数があり、カウンタの開始値を指定できることを覚えておくと更に便利に使うことができます。

さて、ここで重要なのは次の2点です。

  1. for in文はリストの要素を取り出すことができる
  2. 整数のシーケンスを作成することができる

単純にリストを展開するだけでしたら用途は限られますが、リストを展開しながらシーケンスを作成するという2つのことを同時に行うことで、アイデア次第で複雑な処理が行えるようになります。

次のコードはDX入門コースで行うエクセルデータからPythonで請求書を作成するコードの一部です。

Pandas DataFrame型データを1行ずつ取り出して、
openpyxlで開かられたエクセルデータのセルに値を1つずつ挿入する部分です。
iにシーケンスの整数値が入り、rowに行の値が入ります。

A{i+1}とすることでエクセルのA列のi+1行目セルにDataFrame型データの行データの特定値を挿入できます。

for i, row in data.iterrows():
      ws[f'A{i+1}'] = row[0]
      ws[f'B{i+1}'] = row[1]

ループ文の練習はプログラミング力をつけるための好材料です。

まずはプログラム化したいことを調理レシピのように細かくリスト化して紙に描いてみましょう。

DX入門コースではコードを自分で組み立てる力を磨いていきます。
退屈な事務作業を効率化することから始まり、集めたデータの活用からデジタライゼーションにつなげていきます。