見出し画像

【Python】知っておくと役立つfor文の使い方

for文は繰り返し処理を行う上で最も基本的な構文です。

リストやタプル、文字列などのデータ集合を操作する際に欠かせません。Pythonを使ったプログラミングをするなら、
必ずfor文を使うことになるでしょう。

しかし、for文にはいくつかの使い方があり、
状況に応じて使い分ける必要があります。

例えば、
複数のリストからまとめて要素を取り出したい時、
要素とインデックス番号の両方が必要な時、

など、それぞれにふさわしいfor文の形があるのです。

この記事では、Pythonのfor文について、
書き方のバリエーションを実例とともにわかりやすく解説していきます。

プログラミングスキルがあがれば、作業がスピードアップし、プログラムの品質も向上します。
ぜひこの機会に、for文の活用力を高めていきましょう。

基本的なfor文


for 変数 in obj:
    処理を記述

この書き方は最も基本的なfor文の形です。
objにはリスト、タプル、文字列、辞書などの、
順に要素を取り出せるイテラブルオブジェクトを指定します。


for文が実行されると、
objの先頭要素から順に変数に代入されながら、
インデントされた処理が繰り返し実行されます。

(例)fruitsという果物のリストがあった場合:

fruits = ["りんご", "みかん", "ぶどう"]
for fruit in fruits:
    print(fruit)

この場合、以下の出力が得られます。

りんご
みかん
ぶどう


zip関数を使ったfor文


for 変数1, 変数2, ... in zip(obj1, obj2, ...):
    処理を記述

この書き方は、
複数のイテラブルオブジェクトから
同時に要素を取り出したい場合に使います。

zip関数は、引数に指定した複数のイテラブルから要素を1つずつ組み合わせて、タプルを生成します。
そしてfor文では、そのタプルからアンパックして変数に代入しながら処理を実行します。

(例)番号と対応する果物のリストがあった場合:

numbers = [1, 2, 3]
fruits = ["りんご", "みかん", "ぶどう"] 

for num, fruit in zip(numbers, fruits):
    print(num, fruit)

出力は以下のようになります。

1 りんご
2 みかん 
3 ぶどう


enumerate関数を使ったfor文



for index, 要素 in enumerate(リストやタプル):
    処理を記述

enumerate関数は、
イテラブルオブジェクトの要素に
通し番号(インデックス)を付けたイテレータを作成します。

この書き方を使うと、
インデックスと要素の両方を取得できるので便利です。

(例)fruitsという果物のリストがあった場合:

fruits = ["りんご", "みかん", "ぶどう"]
for i, fruit in enumerate(fruits):
    print(i, fruit)

出力:

0 りんご
1 みかん
2 ぶどう

リストの各要素と、インデックス(通し番号)を取得していますね

リスト内包表記


[処理 for 変数 in リスト]

内包表記は、for文を1行で記述する方法です。

リストの内容を加工して新しいリストを作成したい場合に使えます。
内包表記を使うと、コードがコンパクトになり可読性が上がります。

(例)整数のリストから偶数のみを取り出したリストを作る場合:

nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_nums = [n for n in nums if n % 2 == 0]
print(even_nums)

出力:

[2, 4, 6, 8, 10]


内包表記を少しレベルアップ


内包表記は、集合や辞書でも使えます。

集合内包表記

[ ]を{ }に変えると、集合値を返します。 (重複しない値)

nums = [1, 2, 3, 1, 2, 4]
sets = {n for n in nums}
print(sets)

出力:

{1, 2, 3, 4}


辞書内包表記

keyとvalueをコロン(:)でつなぐと辞書で返します

nums = [1, 2, 3, 1, 2, 4]
dic = {n : n*2 for n in nums}
print(dic)

出力:

{1: 2, 2: 4, 3: 6, 4: 8}


ジェネレーター式

[  ]を(  )で囲むとジェネレーター式に変わります。

gen = (i+1 for i in range(5))
print(gen)

出力:

<generator object <genexpr> at 0x7b749d227d10>


さいごに


このように、for文にはいくつかの書き方があり、
状況に応じて使い分ける必要があります。
コードの中でfor文が出てきたら、
どのタイプのfor文なのか確認し、
その意味を理解することが大切です。
実例を交えて説明しましたので、ぜひ練習を重ねて習熟を深めてください。

この記事が気に入ったらサポートをしてみませんか?