工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> Python

Python range()関数をマスター:基礎から応用まで

Python range()関数をマスター:基礎から応用まで

Pythonのrange()は、開始、停止、オプションのステップに基づいて整数シーケンスを生成する組み込みジェネレータです。開始値を省略すると0がデフォルトで、停止値(排他的)に達するまで1ずつ増加します。例えばrange(5)は0, 1, 2, 3, 4を生成します。この関数はforループでの反復処理に不可欠です。

このチュートリアルで学べること:

構文

range(start, stop, step)

パラメータ

戻り値

整数のイミュータブルなシーケンスのように振る舞うrangeオブジェクトを返します。リストに変換すると完全なシーケンスが表示されます。

Python range()関数と歴史

Python 3で導入されたrange()は、Python 2で使われていたxrange()に置き換わりました。主な違いは以下の通り:

range()xrange()
数値のイミュータブルなシーケンスを返すジェネレータオブジェクトを返す
シーケンス長に比例したメモリを消費最小メモリで遅延生成
小~中規模の範囲に適する大規模または無限シーケンスに適する
巨大な範囲ではメモリ確保で低速大規模範囲の反復で高速

range()の使い方

0から9までの数値を出力する基本例:

for i in range(10):
    print(i, end=" ")

出力:

0 1 2 3 4 5 6 7 8 9

range()でのstartとstopの使用

開始値を指定するとシーケンスがシフト:

for i in range(3, 10):
    print(i, end=" ")

出力:

3 4 5 6 7 8 9

start、stop、stepの使用

ステップを追加して数値間の間隔を制御:

for i in range(3, 10, 2):
    print(i, end=" ")

出力:

3 5 7 9

正のステップで値を増分

デフォルトのステップは1ですが、任意の正の整数を指定可能:

for i in range(1, 30, 5):
    print(i, end=" ")

出力:

1 6 11 16 21 26

逆順範囲: 負のステップで減分

負のステップで降順シーケンスを作成:

for i in range(15, 5, -1):
    print(i, end=" ")

出力:

15 14 13 12 11 10 9 8 7 6

Python range()での浮動小数点数

組み込みrange()は整数のみ受け付けます。浮動小数点数を渡すとTypeErrorが発生:

for i in range(10.5):
    print(i, end=" ")

出力:

Traceback (most recent call last):
  File "python_range.py", line 1, in 
    for i in range(10.5):
TypeError: 'float' object cannot be interpreted as an integer

Python range()とforループの併用

range()はlen()と組み合わせてリストのインデックスを反復するのによく使われます:

arr_list = ['MySQL', 'MongoDB', 'PostgreSQL', 'Firebase']
for i in range(len(arr_list)):
    print(arr_list[i], end=" ")

出力:

MySQL MongoDB PostgreSQL Firebase

Python range()をリストとして使用

rangeをリストに変換は簡単:

print(list(range(10)))

出力:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Python range()での文字使用

range()は整数のみ扱えますが、文字をUnicodeコードポイントに変換してアルファベットシーケンスを生成可能:

def get_alphabets(startletter, stopletter, step):
    for c in range(ord(startletter.lower()), ord(stopletter.lower()), step):
        yield chr(c)

print(list(get_alphabets("a", "h", 1)))

出力:

['a', 'b', 'c', 'd', 'e', 'f', 'g']

範囲要素へのアクセス方法

反復、インデックス、リスト変換で値を取得:

反復

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

出力:

0 1 2 3 4 5

インデックス

startvalue = range(5)[0]
print("最初の要素:", startvalue)
secondvalue = range(5)[1]
print("2番目の要素:", secondvalue)
lastvalue = range(5)[-1]
print("最後の要素:", lastvalue)

出力:

最初の要素: 0
2番目の要素: 1
最後の要素: 4

list()を使用

print(list(range(10)))

出力:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

例: range()で偶数を取得

18までの偶数を生成:

for i in range(2, 20, 2):
    print(i, end=" ")

出力:

2 4 6 8 10 12 14 16 18

2つのrange()出力を結合

itertools.chainで2つのrangeオブジェクトを結合:

from itertools import chain
print("2つのrangeを1つに結合")
frange = chain(range(10), range(10, 20, 1))
for i in frange:
    print(i, end=" ")

出力:

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

NumPyでのrange()使用

NumPyのarange()はrange()を模倣しつつ浮動小数点ステップをサポート:

構文

arange(start, stop, step)

例

import numpy as np
for i in np.arange(10):
    print(i, end=" ")

出力:

0 1 2 3 4 5 6 7 8 9

NumPyでの浮動小数点範囲

for i in np.arange(0.5, 1.5, 0.2):
    print(i, end=" ")

出力:

0.5 0.7 0.8999999999999999 1.0999999999999999 1.2999999999999998

浮動小数点演算は2進数のため、長い小数展開が表示されることがあります。必要に応じて丸めてください。

まとめ

Python

  1. Python 関数引数完全マスター: 位置引数・キーワード引数・デフォルト引数
  2. Python ラムダ関数: 無名関数の実践ガイド
  3. Pythonジェネレータ:効率的イテレーションと高度なユースケース
  4. Pythonクロージャ解説:ネスト関数が変数を捕捉する仕組み
  5. Pythonラムダ関数をマスターする:実例とベストプラクティス
  6. Python abs()関数:数値と複素数の絶対値を計算
  7. Python round()関数を実例で徹底解説
  8. Python range()関数をマスター:基礎から応用まで
  9. Python map()関数をマスター:構文、例、ベストプラクティス
  10. Python enumerate()をマスター:リスト、タプル、文字列、辞書でインデックス付きループ
  11. Python list.count() 完全ガイド:実践例付きで徹底解説