python for 集中講義

for 文は、リストなどのイテラブルなオブジェクトを順番に処理するための文です。
次のような形式になります。

for 変数 in リスト:
    処理

変数 には、イテラブルなオブジェクト内の要素が順番に代入されます。
リスト には、イテラブルなオブジェクトを指定します。

イテラブルは、Pythonにおいて、「繰り返し可能なオブジェクト」を指します。例えば、リストやタプル、辞書などはすべてイテラブルなオブジェクトです。for文を使って、これらのオブジェクトから要素を一つずつ取り出すことができます。

毎回のループで、変数 には リスト 内の次の要素が代入されます。
最後の要素に到達すると、for 文は終了します。

具体的な例を示すと次のようになります。

fruits = ['apple', 'banana', 'cherry']
for fruit in fruits:
    print(fruit)

この例では、fruitsリストに格納されている「apple」、「banana」、「cherry」が1つずつ変数「fruit」に格納され、処理が実行されます。処理は「print(fruit)」ですので、次のような結果が出力されます。

apple
banana
cherry

for文と合わせて知っておきたいコマンドや単語

  1. イテラブルなオブジェクト:for文はリスト、タプル、辞書などのイテラブルなオブジェクトを処理することができます。
  2. enumerate関数:リストやタプルなどのイテラブルなオブジェクトにインデックス番号を付与するために使用されます。
  3. range関数:特定の範囲の整数を生成するために使用されます。
  4. breakとcontinue:for文の処理を一時的に停止または再開するために使用されます。
  5. zip関数:複数のイテラブルなオブジェクトの各要素をペアにして取得するために使用されます。
  6. return関数:関数の中だけですが、for文の中で特定の条件に一致する場合に限り、関数を終了する目的で使われることがあります。

forとイテラブルなオブジェクトを組み合わせて使う目的と使い方

冒頭でお伝えしたもののことです。

for文とイテラブルなオブジェクトを組み合わせて使う目的は、配列やリストなどの反復処理を行うことです。

使い方は次のようになります。

markdownCopy codefor 変数 in イテラブルなオブジェクト:
    処理

例えば、リストに含まれる要素を取り出して表示する場合、次のようになります。

cssCopy codemy_list = [1, 2, 3, 4, 5]
for item in my_list:
    print(item)

このように、for文を使ってイテラブルなオブジェクトから要素を1つずつ取り出して処理を行うことができます。

forとenumerate関数を組み合わせて使う目的と使い方

enumerate() 関数は、Python の for ループ内でイテラブル(リストやタプルなど)の要素とインデックス(要素の位置)を同時に取得する目的で使われます。例えば、次のようなコードです。

scssCopy codefruits = ["apple", "banana", "cherry"]
for i, fruit in enumerate(fruits):
    print(i, fruit)

実行結果:

Copy code0 apple
1 banana
2 cherry

このように、enumerate() 関数を使うことで、要素とそのインデックスを同時に取得することができます。

forとrange関数を組み合わせて使う目的と使い方

Pythonでの「for」文と「range」関数の組み合わせは、特定の範囲内の数値を一定間隔で取り出し、繰り返し処理を行うために使われます。

「range」関数は、指定された範囲内の数値を生成し、「for」文を使って各数値に対して処理を行います。例えば、0から9までの数値を1つずつ取り出して処理を行いたい場合、次のようなコードが書けます。

for i in range(10):
    print(i)

このように、「range」関数と「for」文の組み合わせを使うことで、繰り返し処理を効率的に行うことができます。

このコードは、0から9までの数字を順に出力するものです。

range関数は指定された範囲の数字を生成するもので、第1引数に終了する数字を指定します。

for文と組み合わせて、range関数で生成された数字を順に取り出して処理を実行することができます。

実行結果:

0
1
2
3
4
5
6
7
8
9

forとbreakを組み合わせて使う目的と使い方

forbreakを組み合わせて使う目的は、特定の条件が満たされた時点で、forループを強制的に終了させることです。これを使うことで、不要な処理を省略することができます。

例えば、次のようなプログラムです。

for i in range(10):
    if i == 5:
        break
    print(i)

このプログラムでは、iが5になったとき点で、break命令が実行され、forループが終了します。実行結果は次のようになります。

0
1
2
3
4

このように、breakを使うことで、特定の条件が満たされた時点で、forループを強制的に終了させることができます。

forとcontinueを組み合わせて使う目的と使い方

continue は、繰り返し処理の中で特定の条件を満たした場合に、その時点で繰り返し処理を中断して、次の繰り返し処理に移ります。

continue を使用すると、現在のイテレーションの処理が終了し、次のイテレーションに移動する、ということです。イメージ湧きますでしょうか

例:

for i in range(10):
    if i % 2 == 0:
        continue
    print(i)

この例では、i が偶数の場合に、continue によって次の繰り返し処理に移ります。このため、出力結果は1, 3, 5, 7, 9となります。

continueとbreakの違い

“continue” と “break” は、同じく for ループ内で使用されますが、異なる目的をもっています。

“continue” は、現在のイテレーションをスキップし、次のイテレーションに移ることを意味します。

例:

for i in range(10):
    if i % 2 == 0:
        continue
    print(i)

このコードでは、i が偶数のときに continue が実行され、そのため偶数は出力されません。

“break” は、for ループを完全に終了することを意味します。

例:

for i in range(10):
    if i == 5:
        break
    print(i)

このコードでは、i が 5 のときに break が実行され、そのため 6 以降の数字は出力されません。

ネストされたfor文(for文内のfor文)

for文の中に更にfor文がいる状態を、「ネストさせたfor文」と呼びます。

下記は具体的な例です:

for i in range(3):
    for j in range(3):
        print(i, j)

この例では、最初のfor文が3回繰り返し、内側のfor文が各回繰り返しにおいて3回繰り返されます。つまり、合計9回の繰り返しが行われます。

結果として、(0,0),(0,1),(0,2),(1,0),(1,1),(1,2),(2,0),(2,1),(2,2)が表示されます。

ネストされたfor文から抜け出す方法

同じようにbreakで抜け出すのですが

内側のfor文から抜け出したい場合は

for i in range(3):
    for j in range(3):
        if i == 1 and j == 1:
            break
        print(i, j)

外側のfor文から抜け出したい場合は

for i in range(3):
    for j in range(3):
        if i == 1 and j == 1:
            break
        print(i, j)
    else:
        continue
    break

です。

もう少し具体的に動きを見ると。
breakを入れなければこうなります。

for i in range(3):
    for j in range(3):
        print(i, j)

0 0 
0 1 
0 2 
1 0 
1 1 
1 2 
2 0 
2 1 
2 2 

内側にbreakを入れると、11、12はbreakで処理されていません。

 for i in range(3):
    for j in range(3):
        if i == 1 and j == 1:
            break
        print(i, j) 

0 0 
0 1 
0 2 
1 0 
2 0 
2 1 
2 2 

外側にbreakを入れると11で全てbreakされて、11以降は処理されていません。

 for i in range(3):
    for j in range(3):
        if i == 1 and j == 1:
            break
        print(i, j)
    else:
        continue
    break 

0 0 
0 1 
0 2 
1 0 

外側のelseがなかったらどうなるの、というと、内側のforが終わった後そのままbreak走って終わります。凡ミス注意ですね。

 for i in range(3):
    for j in range(3):
        if i == 1 and j == 1:
            break
        print(i, j)
    break

0 0 
0 1 
0 2 

forとzip関数を組み合わせて使う目的と使い方

for文とzip関数を組み合わせて使う目的は、複数のイテラブルオブジェクトの要素を同時に取り出すことです。zip関数は、引数に渡された複数のイテラブルオブジェクトから要素を取り出して、タプルのシーケンスとして返す関数です。

例えば、次のようなコードを書いた場合:

a = [1, 2, 3]
b = [10, 20, 30]

for x, y in zip(a, b):
    print(x, y)

実行すると、次のような出力が得られます:

1 10
2 20
3 30

この例では、2つのリスト ab の要素を同時に取り出して、x には a の要素、y には b の要素が代入されています。これによって、複数のイテラブルオブジェクトを効率的に処理することができます。

for文とreturnを組み合わせて使う目的と使い方

関数の中だけの話です。ですのでちょっとはずれますけれど。

for文を使って特定の条件に達した時点で関数の実行を終了して結果を返すために使います。例えば、以下のようなコードです。

def find_first_positive(numbers):
    for number in numbers:
        if number > 0:
            return number
    return None

print(find_first_positive([-1, -2, 3, 4, -5]))

この例では、リスト numbers の中から最初に正の数を検索します。最初に正の数が見つかった時点で、return によりその数を返して関数 find_first_positive の実行を終了します。見つからなかった場合は None を返します。

for文を組むにあたって注意しておきたいこと

for文を使用する際には、以下の点に注意することが望ましいです:

  1. イテラブルオブジェクトの長さが正確であること。
  2. イテラブルオブジェクトの中身が予想されるものであること。
  3. for文のインデックス変数の意味や使い方に注意すること。
  4. ループ処理に使う変数は、外部からの影響を受けないように適切なスコープを設定すること。
  5. 無限ループや処理時間のかかりすぎを防ぐために、break文やreturn文などを正確に記述すること。

コメント

タイトルとURLをコピーしました