Python のループと範囲

PythonPythonBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、Python の for ループ文と range() 関数の使い方を学びます。for ループ文を使うと、リストや文字列などの要素のシーケンスを反復処理できます。range() 関数は、デフォルトで 0 から始まり、デフォルトで 1 ずつ増加し、指定された数で終わる数値のシーケンスを返す組み込み関数です。

到達目標

  • for ループ文
  • range() 関数
  • enumerate() 関数
  • zip() 関数

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python(("Python")) -.-> python/PythonStandardLibraryGroup(["Python Standard Library"]) python(("Python")) -.-> python/BasicConceptsGroup(["Basic Concepts"]) python(("Python")) -.-> python/ControlFlowGroup(["Control Flow"]) python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) python/BasicConceptsGroup -.-> python/strings("Strings") python/ControlFlowGroup -.-> python/for_loops("For Loops") python/DataStructuresGroup -.-> python/lists("Lists") python/FunctionsGroup -.-> python/arguments_return("Arguments and Return Values") python/FunctionsGroup -.-> python/build_in_functions("Build-in Functions") python/PythonStandardLibraryGroup -.-> python/data_collections("Data Collections") subgraph Lab Skills python/strings -.-> lab-78{{"Python のループと範囲"}} python/for_loops -.-> lab-78{{"Python のループと範囲"}} python/lists -.-> lab-78{{"Python のループと範囲"}} python/arguments_return -.-> lab-78{{"Python のループと範囲"}} python/build_in_functions -.-> lab-78{{"Python のループと範囲"}} python/data_collections -.-> lab-78{{"Python のループと範囲"}} end

for ループ

for ループは、要素のシーケンスを反復処理できる制御フロー文です。for ループの構文は以下の通りです。

for variable in sequence:
    statements

ここで、sequence は要素のシーケンス(リスト、タプル、文字列など)であり、variable はシーケンスの各値を 1 つずつ受け取る 変数 です。ループ内の statements は、シーケンスの各値に対して実行されます。

新しい Python インタプリタを開きます。

python3

整数のリストを反復処理して各値を表示する簡単な for ループの例を以下に示します。

numbers = [1, 2, 3, 4, 5]
for number in numbers:
    print(number)

文字列の反復処理:

for char in 'Hello':
    print(char)

range() 関数

range() 関数は、Python の組み込み関数で、数値のシーケンスを返します。range() 関数の構文は以下の通りです。

range(start, stop, step)

ここで、start はシーケンスの開始数値(デフォルトは 0)、stop はシーケンスの終了数値(含まれません)、step はシーケンスの各数値間の増分(デフォルトは 1)です。

range() 関数を for ループで使って、数値のシーケンスを反復処理できます。たとえば:

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

また、range() 関数に startstop の値を指定することもできます。

for i in range(2, 5):
    print(i)

さらに、ステップ値を指定することもできます。

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

ネストされた for ループ

ネストされたシーケンスを反復処理するために、複数の for ループを使うこともできます。たとえば:

for i in range(1, 3):
    for j in range(1, 4):
        print(f'i: {i}, j: {j}')

演習

これで、あなたの番です。for ループ文と range() 関数を使ってみましょう。以下のパターンを表示するプログラムを書いてください。

*
**
***
****
*****

ヒント:

あなたのプログラムは 2 つの for ループを使う必要があり、1 つがもう 1 つの中にネストされています。外側のループは行数に対して反復処理し、内側のループは列数に対して反復処理します。

この演習を完了するには、print() 関数を使ってアスタリスクを表示する必要があります。ループの反復回数を制御するために range() 関数を使うことができます。

enumerate() 関数

enumerate 関数は、リストなどの反復可能オブジェクトを入力として受け取り、各要素の インデックス を含むタプルを生成するイテレータを返します。以下の例では、アンパッキング演算子 (index, fruit) を使って、各タプルのインデックスと値をそれぞれ indexfruit という変数に割り当てています。

## Python の for ループで enumerate 関数を使う例

## 反復処理するサンプルリスト
fruits = ['apple', 'banana', 'cherry']

## for ループと enumerate 関数を使ってリストを反復処理する
for index, fruit in enumerate(fruits):
    print(f"Index: {index}, Fruit: {fruit}")

## 出力:
## Index: 0, Fruit: apple
## Index: 1, Fruit: banana
## Index: 2, Fruit: cherry

上記の例では、apple、banana、cherry の要素を含むリスト fruits を定義しています。

その後、for ループを使って fruits のリストを反復処理し、enumerate 関数を使ってリストの各要素のインデックスと値を取得します。ループ内では、文字列フォーマットを使って indexfruit を表示しています。enumerate 関数はデフォルトで 0 からカウントを始めますが、オプション引数の start を使って、カウントの開始点を別の値に指定することができます。

zip() 関数

複数のリストやその他の反復可能オブジェクトを扱い、要素をペアで反復処理したい場合、または複数の反復可能オブジェクトを 1 つに結合したい場合に、zip() 関数が便利です。

## Python の for ループで zip() 関数を使う例

## 反復処理するサンプルリスト
fruits = ['apple', 'banana', 'cherry']
prices = [1.2, 3.5, 2.5]

## for ループと zip 関数を使ってリストを反復処理する
for fruit, price in zip(fruits, prices):
    print(f"Fruit: {fruit}, Price: ${price}")

## 出力:
## Fruit: apple, Price: $1.2
## Fruit: banana, Price: $3.5
## Fruit: cherry, Price: $2.5

上記の例では、それぞれ applebananacherry1.23.52.5 の要素を含む 2 つのリスト fruitsprices を定義しています。

その後、zip() 関数を使って 2 つのリストの要素を for ループで反復処理します。zip() 関数は複数の反復可能オブジェクトを入力として受け取り、対応する位置の入力反復可能オブジェクトの要素を含むタプルを生成するイテレータを返します。上記の例では、アンパッキング演算子 (fruit, price) を使って、各タプルの要素をそれぞれ fruitprice という変数に割り当てています。ループ内では、文字列フォーマットを使って果物と価格を表示しています。

入力反復可能オブジェクトの長さが等しくない場合、zip() 関数は最短の反復可能オブジェクトの終端で処理を停止します。

まとめ

この実験では、Python の for ループ文と range() 関数を使って要素のシーケンスを反復処理する方法を学びました。for ループと range() 関数の構文を学び、リスト、文字列、タプル、数値のシーケンスを反復処理するためのそれらの使用例を見ました。また、ネストされたシーケンスを反復処理するためにネストされた for ループをどのように使うかも学びました。

これで、for ループと range() 関数の基本を学んだので、これらのツールを使ってデータ処理、出力生成などのタスクを実行できるようになりました。