【Python】for文とrange関数

【Python】for文とrange関数

for文とrange関数の基本

Pythonのfor文は、リストやタプルなどの反復可能なオブジェクトを順番に処理するための構文です。その中でも、range()関数を使うことで、一定の数値の範囲を簡単にループ処理できます。

range関数の基本構文

range()関数は、以下のように3つの異なる使い方ができます。

  • range(stop) – 0からstop-1までの整数を生成
  • range(start, stop) – startからstop-1までの整数を生成
  • range(start, stop, step) – startからstop-1までstep刻みの整数を生成

基本的な使用例

# 0から4まで出力
for i in range(5):
    print(i)  # 0, 1, 2, 3, 4

step引数を使う

# 0から10まで2刻みで出力
for i in range(0, 11, 2):
    print(i)  # 0, 2, 4, 6, 8, 10

負のステップ値を使う

# 10から1まで逆順に出力
for i in range(10, 0, -1):
    print(i)  # 10, 9, 8, ..., 1

len()と組み合わせる

リストの要素にインデックスを付けながら処理する場合、len()と組み合わせて使うことができます。

fruits = ["apple", "banana", "cherry"]
for i in range(len(fruits)):
    print(i, fruits[i])

リバースループを作る

reversed()range()を組み合わせると、簡潔に逆順ループを作れます。

for i in reversed(range(5)):
    print(i)  # 4, 3, 2, 1, 0

rangeをリストに変換する

numbers = list(range(5))
print(numbers)  # [0, 1, 2, 3, 4]

enumerateと組み合わせる

リストをループ処理する際にenumerate()と組み合わせると、インデックス付きの繰り返しが可能です。

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

zipと組み合わせる

複数のリストを同時にループ処理する場合、zip()と組み合わせると便利です。

names = ["Alice", "Bob", "Charlie"]
ages = [25, 30, 35]
for name, age in zip(names, ages):
    print(name, age)

奇数・偶数を取り出す

# 1から10までの奇数
for i in range(1, 11, 2):
    print(i)  # 1, 3, 5, 7, 9

# 0から10までの偶数
for i in range(0, 11, 2):
    print(i)  # 0, 2, 4, 6, 8, 10

rangeのメモリ効率

range()はジェネレーターのように機能するため、リストのようにすべての要素をメモリに保持せず、ループのたびに値を生成するためメモリ効率が良いです。

# メモリ効率の確認
import sys
print(sys.getsizeof(range(1000000)))  # メモリ使用量が非常に小さい

rangeの代替手段

rangeの代わりに、NumPyのarange()linspace()を使うこともできます。

import numpy as np

# arange() を使う
print(np.arange(0, 10, 2))  # [0 2 4 6 8]

# linspace() を使う
print(np.linspace(0, 10, 5))  # [ 0.   2.5  5.   7.5 10. ]

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です