メインコンテンツにスキップ
モジュール 2 · レッスン 1 / 4コース内の 5/36~10 min
モジュールのレッスン (1/4)

for ループと範囲

Python の for ループは、項目のシーケンスを反復するために使用されます。 リスト、文字列、範囲、辞書など、「反復可能な」ものなら何でも。

Python
parole = ["ciao", "mondo", "!"]
for p in parole:
    print(p)
# ciao
# mondo
# !

パターンは常に同じです: for <variable> in <iterable>: の後に続きます。 項目ごとに 1 回実行されるインデントされたブロック。

range(...): 整数間隔を生成します

range は、整数の遅延シーケンスを生成します。 3 つの形式:

Python
range(5)         # 0, 1, 2, 3, 4
range(2, 6)      # 2, 3, 4, 5
range(0, 10, 2)  # 0, 2, 4, 6, 8     (step)
range(5, 0, -1)  # 5, 4, 3, 2, 1     (negative step)

range は、slice と同様、右端に排他的です。これは遅延オブジェクトです。 すべての数値にメモリを割り当てるのではなく、一度に 1 つずつ生成します。

Python
totale = 0
for i in range(1, 11):
    totale = totale + i
totale  # 55  (1+2+...+10)

インデックスを使用した反復処理: enumerate

項目とそのインデックスを一緒にする必要がある場合は、enumerate を使用します。

Python
parole = ["ciao", "mondo", "!"]
for i, p in enumerate(parole):
    print(i, p)
# 0 ciao
# 1 mondo
# 2 !

enumerate は、2 つのペアに直接割り当てる (index, value) ペアを生成します タプルのアンパック による変数 (専用のモジュールで確認します) データ構造)。

2 つのシーケンスを並行して反復する: zip

Python
nomi = ["Ada", "Linus", "Grace"]
anni = [36, 54, 79]
for n, a in zip(nomi, anni):
    print(f"{n} ha {a} anni")

zip は最短シーケンスで停止します。

range() と Python の遅延

Python では、range() 関数はメモリ内に実際のリストを割り当てません。要求に応じて一度に 1 つずつ数値を生成する 遅延ジェネレーター を返します (たとえば、for ループ内)。これにより、RAM を肥大化させることなく、数百万の整数を反復処理できます。範囲値をリストとして検査するには、list(range(5)) を使用して明示的にキャストできます。

自分で試してみてください

運動#python.m2.l1.e1
試行回数: 0読み込み中…

range(...) の for ループを使用して 1 から 100 (両端を含む) までの数値の合計を計算し、それを `total` に代入して評価します。

エディターを読み込み中…
ヒントを表示

range(1, 101) は 1、2、...、100 を生成します (右側では排他的)。

3 回の試行後に解決策が利用可能になります

復習演習

運動#python.m2.l1.e2
試行回数: 0読み込み中…

リスト `words = ['uno', 'due', 'tre']` を指定すると、enumerate を使用して '0:uno'、'1:due'、'2:tre' のような文字列のリスト `pairs` を構築します。 「ペア」を評価します。

エディターを読み込み中…
ヒントを表示

enumerate(words) は、反復ごとに (インデックス、値) を返します。

3 回の試行後に解決策が利用可能になります

追加の課題

運動#python.m2.l1.e3
試行回数: 0読み込み中…

Calculate the sum of all even numbers from 2 to 20 inclusive using a `for` loop over a `range`. Store the final sum in `even_sum` and evaluate it.

エディターを読み込み中…
ヒントを表示

2 ~ 20 の偶数の整数のみを反復するには、 range(2, 21, 2) を使用します。

3 回の試行後に解決策が利用可能になります