Pythonのforループは、反復する機能です。 リストのようなシーケンスオブジェクトがある場合、forループを使用してリスト内のアイテムを反復処理できます。
forループの機能は、他の多くのプログラミング言語で見られるものとそれほど変わりません。
この記事では、Pythonのforループを詳しく調べ、リスト、タプルなどのさまざまなシーケンスを反復処理する方法を学びます。さらに、breakおよびcontinueステートメントを使用してループのフローを制御する方法も学びます。
Pythonのforループの基本構文
Pythonのforループの基本的な構文は、以下に示すものと似ています。
for itarator_variable in sequence_name:
Statements
. . .
Statements
Pythonのforループの構文をよりよく説明します。
- ステートメントの最初の単語は、forループの開始を示すキーワード「for」から始まります。
- 次に、シーケンスを反復処理し、ループ内でさまざまな関数を実行するために使用できるイテレータ変数があります。
- 次に、Pythonの「in」キーワードがあり、これはイテレータ変数にシーケンス内の要素をループするように指示します。
- 最後に、シーケンス変数があります。これはリスト、タプル、またはその他の種類の反復子である可能性があります。
- ループの一部で、反復子変数を操作し、さまざまな関数を実行できます。
1. forループを使用して文字列の個々の文字を印刷する
Pythonの文字列は文字のシーケンスです。プログラムの中で文字列の文字を個別に処理する必要がある場合は、ここでforループを使用できます。
次に、その動作方法を見てみましょう。
word="anaconda"
for letter in word:
print (letter)
出力:
a
n
a
c
o
n
d
a
このループが機能する理由は、Pythonが文字列を単一の文字ではなく文字のシーケンスとして扱うからです。
2. 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
3. Pythonのforループのネスト
forループの中に別のforループがある場合、それはネストされたforループと呼ばれます。ネストされたforループの複数の応用があります。
上記のリストの例を考えてみましょう。forループはリストから個々の単語を出力します。しかし、リスト内の各単語の個々の文字を出力したい場合はどうでしょうか?
ここでネストされたforループがより適しています。最初のループ(親ループ)は単語を1つずつ処理します。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は空行を出力するために使用されます
出力
4. range() 関数を使った Python の for ループ
Python の range()は、組み込み関数の一つです。特定の回数だけ for ループを実行したい場合や、出力するオブジェクトの範囲を指定する必要がある場合に、range 関数が非常に役立ちます。次の例を考えてみましょう。ここでは、数字 1、2、3 を出力したいとします。
for x in range(3):
print("Printing:", x)
# 出力
# Printing: 0
# Printing: 1
# Printing: 2
range 関数には、開始と終了の他にもう1つのパラメータがあります。それがステップパラメータです。これは、range 関数に各カウント間で何個の数をスキップするかを伝えます。
以下の例では、ステップとして数字 3 を使用し、出力される数字が前の数字 + 3 であることがわかります。
for n in range(1, 10, 3):
print("Printing with step:", n)
# 出力
# ステップ付き出力: 1
# ステップ付き出力: 4
# ステップ付き出力: 7
5. forループでのbreak文
break文は、forループを途中で抜けるために使用されます。特定の条件が満たされたときにforループを抜けるために使用されます。
例えば、数値のリストがあり、特定の数値が存在するかどうかを確認したい場合を考えます。数値のリストを反復処理し、数値が見つかった場合は、ループから抜け出します。なぜなら、残りの要素を反復処理する必要がないからです。
この場合、forループとともにPythonのif else条件を使用します。
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
6. forループでのcontinue文
continue文を使用して、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}')
6. Pythonのforループとelseブロック
Pythonのforループにはelseブロックを使用できます。elseブロックは、forループがbreak文で終了しない場合にのみ実行されます。
すべての数が偶数の場合にのみ数の合計を出力する関数があるとしましょう。
奇数が存在する場合、forループを終了するためにbreak文を使用できます。そのため、forループが通常に実行される場合にのみ合計が出力されるように、else部分で合計を出力できます。
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
結論
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.
Source:
https://www.digitalocean.com/community/tutorials/python-for-loop-example