Pythonのforループ

Pythonのforループは反復する機能です。 listのようなシーケンスオブジェクトがある場合、forループを使用してリスト内のアイテムを反復処理できます。

forループの機能は、他の多くのプログラミング言語で見られるものとあまり変わりません。

この記事では、Pythonのforループを詳しく説明し、リスト、タプルなどの異なるシーケンスを反復処理する方法を学びます。さらに、breakおよびcontinue文を使用してループのフローを制御する方法も学びます。

forループを使用するタイミング

コードのブロックを固定回数繰り返す必要がある場合にいつでも使用します。繰り返し回数がわからない場合は、代わりに「whileループ」ステートメントを使用します。

Pythonのforループ構文

Pythonのforループの基本的な構文は、以下に示すものと似ています。

for itarator_variable in sequence_name:
	Statements
	. . .
	Statements

Pythonのforループ構文の詳細

  • 文の最初の単語は、forループの開始を示すキーワード “for”で始まります。
  • 次に、イテレータ変数が続き、この変数はシーケンスを反復処理し、ループ内でさまざまな機能を実行するために使用できます。
  • 次に、Pythonの“in”キーワードがあり、これはイテレータ変数にシーケンス内の要素をループするよう指示します。
  • そして最後に、シーケンス変数があり、これはリスト、タプル、または他の種類のイテレータである可能性があります。
  • ループの一部として、イテレータ変数を操作し、さまざまな機能を実行できます。

Python文字列は文字のシーケンスです。プログラミングアプリケーションのどこかで文字列の各文字を個別に処理する必要がある場合は、ここでforループを使用できます。

以下にその方法を示します。

word="anaconda"
for letter in word:
	print (letter)

出力:

a
n
a
c
o
n
d
a

このループが機能する理由は、Pythonが文字列を全体としてではなく、文字のシーケンスとして扱うためです。

Pythonのリストやタプルを繰り返し処理するためのforループの使用方法

リストタプルは反復可能なオブジェクトです。これらのオブジェクト内の要素をループで処理する方法を見てみましょう。

words= ["Apple", "Banana", "Car", "Dolphin" ]
for word in words:
	print (word)

出力:

Apple
Banana
Car
Dolphin

さて、ここでタプルの要素をループ処理する方法を見てみましょう。

nums = (1, 2, 3, 4)

sum_nums = 0

for num in nums:
    sum_nums = sum_nums + num

print(f'Sum of numbers is {sum_nums}')

# 出力
# 数の合計は10です

Pythonのforループを入れ子にする

別のforループの中にforループがある場合、これを入れ子のforループと呼びます。入れ子のforループには複数の応用があります。

上記のリストの例を考えてみましょう。forループはリストから個々の単語を出力します。しかし、リスト内の各単語の個々の文字を出力したい場合はどうすればよいでしょうか?

ここで、ネストされたforループがより適しています。最初のループ(親ループ)は単語を一つずつ処理します。2番目のループ(子ループ)はそれぞれの単語の文字をループします。

words= ["Apple", "Banana", "Car", "Dolphin" ]
for word in words:
        # このループはリストから単語を取得しています
        print ("The following lines will print each letters of "+word)
        for letter in word:
                # このループは単語から文字を取得しています
                print (letter)
        print("") # このprintは空行を出力します

出力

A nested loop is structurally similar to nested if statements

Pythonのrange()関数を使用したforループ

Pythonのrangeは、組み込み関数の一つです。特定の回数だけforループを実行したい場合や、出力するオブジェクトの範囲を指定する必要がある場合に、range関数が非常に役立ちます。

range()を使用するときには、1から3つの整数引数を渡すことができます。

  • startは、シーケンスが始まる整数値を示します。これが含まれていない場合、startは0から始まります。
  • stopは常に必要であり、数え上げる整数ですが、これ自体は含まれません。
  • stepが省略されている場合、stepはデフォルトで1になります。

次の例を考えてみましょう。1、2、および3の数字を表示したいとします:

for x in range(3):
    print("Printing:", x)
	
# 出力

# 印刷: 0
# 印刷: 1
# 印刷: 2

range関数は、開始と停止以外にも別のパラメータを取ります。これがステップパラメータです。これは、範囲関数に次の数をカウントする際にスキップする数を指定します。

以下の例では、ステップとして数字3を使用しました。出力の数字は前の数字+3になっていることがわかります。

for n in range(1, 10, 3):
    print("Printing with step:", n)
	
# 出力

# ステップ付き印刷: 1
# ステップ付き印刷: 4
# ステップ付き印刷: 7

また、step引数に負の値を使用して逆順に反復することもできますが、startおよびstop引数を適切に調整する必要があります:

for i in range(100,0,-10):
   print(i)

ここでは、100がstart値、0がstop値、-10が範囲ですので、ループは100から始まり、0で終わり、各反復で10ずつ減少します。これは出力で行われます:

Output
100 90 80 70 60 50 40 30 20 10

Pythonでプログラミングする際、forループはしばしば繰り返しのためのパラメータとしてrange()シーケンス型を使用します。

forループとブレーク文

ブレーク文は、forループを早期に終了するために使用されます。特定の条件が満たされた場合にforループを終了するために使用されます。

たとえば、数値のリストがあるとし、特定の数値が存在するかどうかを確認したいとします。数値のリストを反復処理し、数値が見つかった場合はループを抜け出します。なぜなら、残りの要素を繰り返し処理する必要がないからです。

この場合、Pythonのif else条件をforループと一緒に使用します。

nums = [1, 2, 3, 4, 5, 6]

n = 2

found = False
for num in nums:
    if n == num:
        found = True
        break

print(f'List contains {n}: {found}')

# 出力
# リストに2が含まれている: True

forループとコンティニュー文

特定の条件の場合に、forループ内でコンティニュー文を使用して、forループの本文の実行をスキップすることができます。

リストの数値があり、正の数の合計を出力したいとします。continue文を使用して、負の数のためにforループをスキップすることができます。

nums = [1, 2, -3, 4, -5, 6]

sum_positives = 0

for num in nums:
    if num < 0:
        continue
    sum_positives += num

print(f'Sum of Positive Numbers: {sum_positives}')

elseブロックを持つPythonのforループ

elseブロックをPythonのforループと一緒に使用できます。elseブロックは、forループがbreak文によって終了しない場合にのみ実行されます。

すべての数値が偶数である場合にのみ数値の合計を出力する関数があるとします。

奇数が存在する場合にforループを終了するためにbreak文を使用できます。else部分で合計を出力することで、forループが通常に実行された場合にのみ出力されます。

def print_sum_even_nums(even_nums):
    total = 0

    for x in even_nums:
        if x % 2 != 0:
            break

        total += x
    else:
        print("For loop executed normally")
        print(f'Sum of numbers {total}')


# これは合計を出力します
print_sum_even_nums([2, 4, 6, 8])

# これは、シーケンス内の奇数のために合計が出力されません
print_sum_even_nums([2, 4, 5, 8])

# 出力

# forループが通常に実行されました
# 数値の合計 20

シーケンシャルデータ型を使用したforループ

リストやその他のデータシーケンス型は、forループの反復パラメータとしても活用できます。 range() を反復処理する代わりに、リストを定義してそのリストを反復処理することができます。

リストを変数に割り当て、そのリストを反復処理します:

sharks = ['hammerhead', 'great white', 'dogfish', 'frilled', 'bullhead', 'requiem']

for shark in sharks:
   print(shark)

この場合、リスト内の各アイテムを出力しています。変数 shark を使用しましたが、変数名を他の任意の 有効な変数名 にしても同じ出力が得られます:

Output
hammerhead great white dogfish frilled bullhead requiem

上記の出力は、for ループがリストを反復処理し、リストから各アイテムを1行ずつ出力したことを示しています。

リストやその他のシーケンスベースの データ型 、例えば 文字列タプル は、反復処理可能なので、ループと一緒に使用されることが一般的です。これらのデータ型を range() と組み合わせて使用して、リストにアイテムを追加することもできます。例えば:

sharks = ['hammerhead', 'great white', 'dogfish', 'frilled', 'bullhead', 'requiem']

for item in range(len(sharks)):
   sharks.append('shark')

print(sharks)
Output
['hammerhead', 'great white', 'dogfish', 'frilled', 'bullhead', 'requiem', 'shark', 'shark', 'shark', 'shark', 'shark', 'shark']

ここでは、sharks リストの長さ分のプレースホルダー文字列 'shark' を各アイテムに追加しました。

また、for ループを使用してリストをゼロから構築することもできます。

integers = []

for i in range(10):
   integers.append(i)

print(integers)

この例では、リストintegersが空で初期化されていますが、forループは次のようにリストを埋めます:

Output
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

同様に、文字列を反復処理することもできます:

sammy = 'Sammy'

for letter in sammy:
   print(letter)
Output
S a m m y

タプルを反復処理する場合は、上記のリストや文字列を反復処理するのと同じ形式で行います。

辞書を反復処理する際には、辞書のキー:値の構造を念頭に置いておくことが重要です。これにより、辞書の正しい要素を呼び出していることを確認できます。以下は、キーと値の両方を呼び出す例です:

sammy_shark = {'name': 'Sammy', 'animal': 'shark', 'color': 'blue', 'location': 'ocean'}

for key in sammy_shark:
   print(key + ': ' + sammy_shark[key])
Output
name: Sammy animal: shark location: ocean color: blue

辞書をforループと組み合わせる際には、反復変数が辞書のキーに対応し、dictionary_variable[iterating_variable]が値に対応します。上記の例では、反復変数keyはキーを表し、sammy_shark[key]は値を表しています。

ループは、順序付けられたデータ型を反復処理して操作するためによく使用されます。

結論

Pythonのforループは、他のプログラミング言語と非常に似ています。forループでは、breakやcontinue文を使用して実行を変更できます。ただし、Pythonでは、forループにオプションのelseブロックを持つこともできます。

I hope you have gained some interesting ideas from the tutorial above. If you have any questions, let us know in the comments below.

ここからは、whileループbreak、continue、およびpassステートメントに関するチュートリアルを読んで、ループについて学び続けることができます。

プロジェクトでforループを使用するためには、次のチュートリアルに従ってください:

Source:
https://www.digitalocean.com/community/tutorials/how-to-construct-for-loops-in-python-3