Python range() Funkce: Float, List, Příklady smyček For

⚡ Chytré shrnutí

Python range() je vestavěná funkce, která generuje neměnnou posloupnost celých čísel od počáteční hodnoty až po koncovou hodnotu (bez ní), přičemž pro řízení přírůstku je použit volitelný krok.

  • 🔘 Syntaxe: Funkce range(start, stop, step) přijímá až tři celočíselné argumenty, kde start je výchozí hodnota 0 a step je výchozí hodnota 1.
  • ☑️ Exkluzivní zastávka: Sekvence se vždy zastaví o jednu hodnotu před indexem stop, takže range(5) vrátí hodnoty od 0 do 4.
  • (Tj. Krokové ovládání: Kladný krok zvyšuje hodnoty, zatímco záporný krok počítá zpět pro opačný rozsah.
  • 🧪 Typové limity: Přijímají se pouze celá čísla, takže argumenty s plovoucí desetinnou čárkou nebo řetězcové argumenty vyvolávají chybu TypeError.
  • 🛠️ Čísla s plovoucí čárkou v NumPy: Funkce arange() v NumPy rozšiřuje chování range() na sekvence s plovoucí desetinnou čárkou.
  • 🤖 Pracovní postupy umělé inteligence: Kód strojového učení se spoléhá na range() k iteraci trénovacích epoch, minidávek a mřížek hyperparametrů.

Python Funkce range().

Co je to Python Rozsah?

Python range() je vestavěná funkce dostupná s Python od Python (3.x) a dává posloupnost čísel na základě daného počátečního a koncového indexu. V případě, že počáteční index není uveden, je index považován za 0 a bude zvyšovat hodnotu o 1 až do koncového indexu.

Například funkce range(5) vrátí hodnoty 0, 1, 2, 3, 4. Python range() je velmi užitečný příkaz a používá se většinou, když musíte iterovat pomocí pro smyčku.

Syntax

Syntaxe funkce range() je uvedena níže:

range(start, stop, step)

parametry

  • Start: (volitelné) Počáteční index je celé číslo, a pokud není zadáno, výchozí hodnota je 0.
  • stop: Index zastavení určuje hodnotu, při které se má funkce rozsahu zastavit. Je to povinný vstup pro funkci rozsahu. Poslední hodnota bude vždy o 1 menší než hodnota zastavení.
  • krok: (volitelné) Hodnota kroku je číslo, o které se má zvýšit další číslo v rozsahu; standardně je to 1.

Návratová hodnota

Návratová hodnota je posloupnost čísel od daného indexu začátku až po konec.

Python range() Funkce a historie

Python range() byl zaveden z Python verze 3; předtím byla funkcí xrange().

Jak funkce range(), tak i xrange() se používají k vytvoření sekvence čísel.

Následují rozdíly mezi funkcemi range() a xrange():

rozsah() xrange()
Range() udává posloupnost čísel a vrací seznam čísel. Funkce xrange() poskytuje objekt generátoru, který je třeba zacyklit ve smyčce for, aby získal hodnoty.
Range() vrátí seznam. xrange() vrací objekt generátoru.
Metoda range() využívá více paměti, protože vrácený seznam musí být uložen ve srovnání s metodou xrange(). Protože xrange() vrací objekt generátoru, nevrací hodnoty okamžitě a pro jejich získání je nutné jej použít uvnitř smyčky for.
Využití paměti je větší, proto je provádění kódu při práci s velkým množstvím dat pomalé. Spuštění kódu je rychlejší pomocí xrange().

Použití range()

Tento příklad ukazuje, jak vytisknout hodnoty od 0 do 9 pomocí range().

Hodnota použitá v rozsahu je 10, takže výstup je 0 1 2 3 4 5 6 7 8 9.

Protože začátek není zadán, je začátek považován za 0 a poslední hodnota je zadána do 9. Poslední hodnota je vždy o 1 menší než zadaná hodnota, tj. stop-1.

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

Výstup:

0 1 2 3 4 5 6 7 8 9

Použití start a stop in range()

V kódu je počáteční hodnota 3 a koncová hodnota 10. Zde je počáteční index 3, takže posloupnost čísel bude začínat od 3 až do koncové hodnoty. Poslední hodnota v posloupnosti bude o 1 menší než koncová hodnota, 10-1 = 9.

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

Výstup:

3 4 5 6 7 8 9

Pomocí start, stop a step

Počáteční hodnota je 3, takže posloupnost čísel bude začínat na čísle 3. Koncová hodnota je 10, takže posloupnost čísel skončí na čísle (10-1), tj. 9. Krok je 2, takže každá hodnota v posloupnosti bude zvýšena o 2. Pokud není zadána hodnota kroku, hodnota kroku je implicitně nastavena na 1.

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

Výstup:

3 5 7 9

Doposud jsme viděli, jak funkce range() vrací zvýšenou hodnotu pro zadanou koncovou hodnotu. Nyní si zkusme příklad, jak získat sníženou hodnotu v zadaném rozsahu.

Zvyšování hodnot v rozsahu pomocí kladného kroku

Parametr step v range() lze použít k navýšení nebo snížení hodnot. Ve výchozím nastavení je to kladná hodnota, 1. Takže vždy vrátí navýšené hodnoty.

Hodnota kroku musí být kladná, pokud chcete jako výstup inkrementované hodnoty.

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

Výstup:

1 6 11 16 21 26

Reverse Rozsah: Snižování hodnot pomocí záporného kroku

Parametr step se zápornou hodnotou v range() lze použít k získání dekrementovaných hodnot. V níže uvedeném příkladu je hodnota step záporná, takže výstup bude dekrementován od zadané hodnoty rozsahu.

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

Výstup:

15 14 13 12 11 10 9 8 7 6

Počáteční hodnota je 15, koncová hodnota je 5 a krok je záporné číslo, tj. -1. S výše uvedenými vstupy bude funkce range() snižovat hodnotu od 15 dále, dokud nedosáhne koncové hodnoty, ale zde je rozdíl v tom, že poslední hodnota bude stop + 1.

Použití plovoucích čísel v Python rozsah()

Pojďme nyní pracovat na range() pomocí čísel s plovoucí desetinnou čárkou.

Příklad:

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

Ve výše uvedeném příkladu jsme použili stop hodnotu 10.5.

Výstup je:

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

Python vrací chybu, protože funkce range() nepodporuje čísla s plovoucí desetinnou čárkou pro začátek, konec a krok.

Použití for-loop s Python rozsah()

V tomto příkladu použijeme pole čísel a uvidíme, jak iterovat polem uvnitř cyklu for pomocí funkce range().

Příklad:

arr_list = ['Mysql', 'Mongodb', 'PostgreSQL', 'Firebase']

for i in range(len(arr_list)):
    print(arr_list[i], end =" ")

Výstup:

MysqlMongodb PostgreSQL Firebase

Ve výše uvedeném příkladu jsme jako koncovou hodnotu použili len(arr_list). Smyčka for bude iterovat až do koncové hodnoty, tj. délky pole, která bude 4, protože v arr_list máme čtyři položky. Počáteční hodnota bude 0 a krok bude 1, takže hodnoty budou začínat od 0 a končit na 3, tj. délka pole -1, což znamená 4 -1 = 3.

Použití Python range() jako seznam

V tomto příkladu uvidíte, jak využít výstup z rozsahu jako seznam.

Příklad:

print(list(range(10)))

Výstup:

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

Můžete vidět, že výstup je ve formátu seznamu. Nebylo nutné opakovat rozsah() a pomocí metody list() jsme mohli přímo převést výstup z rozsahu do formátu seznamu.

Použití znaků v python range()

Doposud jsme v python range() používali celá čísla. Také jsme viděli, že čísla s plovoucí desetinnou čárkou nejsou podporována v rozsahu pythonu. Zkusme se podívat na výstup, co se stane, když použijeme znaky.

Příklad:

for c in range ('z'):
        print(c, end =" ")

Výstup:

Traceback (most recent call last):
  File "python_range.py", line 1, in <module>
    for c in range ('z'):
TypeError: 'str' object cannot be interpreted as an integer

Vyvolá chybu, že řetězec nelze interpretovat jako celé číslo.

Chcete-li získat seznam abeced, můžete upravit kód a získat požadovaný výstup, jak je uvedeno níže:

Příklad:

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)))

Výstup:

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

Jak získat přístup k prvkům rozsahu

K získání hodnot z rozsahu můžete použít smyčku for nebo použít index k přístupu k prvkům z range().

Použití for-loop

Příklad:

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

Výstup:

0
1
2
3
4
5

Pomocí indexu

Index se používá s rozsahem k získání hodnoty dostupné na dané pozici. Pokud je hodnota rozsahu 5, pro získání počáteční hodnoty můžete použít rozsah(5)[0] a další hodnotu rozsah(5)[1] a tak dále.

Příklad:

startvalue = range(5)[0] 
print("The first element in range is = ", startvalue) 

secondvalue = range(5)[1] 
print("The second element in range is = ", secondvalue) 

lastvalue = range(5)[-1]
print("The first element in range is = ", lastvalue)

Výstup:

The first element in range is =  0
The second element in range is =  1
The first element in range is =  4

Použití seznamu ()

Tato metoda vytiskne všechny prvky z range(). Pomocí list() vrátí prvky z range() ve formátu seznamu.

Příklad:

print(list(range(10)))

Výstup:

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

Poskytuje výstup seznamu pro daný rozsah.

Příklad: Získejte sudá čísla pomocí range()

Použitím funkce range() získáte seznam sudých čísel v rozsahu zadaném jako vstup. Parametry funkce range() jsou: start je 2, stop je 20 a step je 2, takže hodnoty se budou zvyšovat o 2 a budou vracet sudá čísla až do stop-2.

Příklad:

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

Výstup:

2 4 6 8 10 12 14 16 18

Sloučení dvourozsahových () výstupů

V tomto příkladu zřetězíme 2 funkce range() s pomocí funkce chain() modulu itertools.

Příklad:

from itertools import chain

print("Merging two range into one")
frange =chain(range(10), range(10, 20, 1))
for i in frange:
    print(i, end=" ")

Výstup:

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

Použití range() s NumPy

Modul NumPy má funkci arange(), která funguje a dává podobný výstup jako range(). Funkce arange() přijímá stejné parametry jako range().

Syntaxe:

arange(start, stop, step)

Pro práci s NumPy postupujte podle níže uvedených kroků.

Krok 1: Import modulu NumPy

import numpy

V případě, že se během provádění zobrazí chyba s textem „Numpy module not found“ (modul numpy nebyl nalezen), je třeba modul nainstalovat, jak je znázorněno v kroku 2.

Krok 2Instalace NumPy

pip install numpy

Krok 3: Pracovní příklad arange() pomocí NumPy

import numpy as np

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

Výstup:

0 1 2 3 4 5 6 7 8 9

Čísla s plovoucí desetinnou čárkou pomocí NumPy arange()

Není možné získat posloupnost s plovoucí desetinnou čárkou pomocí range(), ale ano pomocí NumPy arange().

Příklad:

Požadovaný rozsah je od 0.5 do 1.5. Hodnota se bude zvyšovat o 0.2.

import numpy as np

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

Výstup:

0.5 0.7 0.8999999999999999 1.0999999999999999 1.2999999999999998

Výstup, který dostaneme, je trochu zvláštní; některá čísla s plovoucí desetinnou čárkou jsou zobrazena se 16 desetinnými místy. To se děje kvůli složitosti ukládání desetinných čísel s plovoucí desetinnou čárkou v binárním formátu. V případě potřeby můžete hodnoty také zaokrouhlit a omezit je na potřebný počet desetinných míst.

Nejčastější dotazy

In Python 3, range() vrací líný, neměnný objekt typu range, nikoli seznam. Generuje čísla na vyžádání. Pokud je vyžadován skutečný seznam, zabalte jej do list(range(n)). Python 2 vrátili úplný seznam.

Koncová hodnota je exkluzivní, takže range(len(items)) se čistě mapuje na indexy začínající na nule. Chcete-li zahrnout koncový bod, přidejte k ní jedničku, například range(1, 11) pro počítání od 1 do 10.

Ne. Volání range(0, 10, 0) vyvolá ValueError: range() arg 3 nesmí být nula, protože nulový krok by nikdy nemohl dosáhnout koncové hodnoty a smyčka by se opakovala donekonečna. Použijte místo toho kladný nebo záporný krok.

Funkce range() odmítá čísla s desetinnou čárkou, ale seznamové comprehension může škálovat celá čísla: [x * 0.5 for x in range(0, 6)] vrátí hodnotu 0.0 až 2.5. Tím se zabrání importu NumPy, zatímco se stále provádí krok za krokem.ping pomocí desetinných hodnot.

Ano. Objekt range ukládá pouze hodnoty start, stop a step, takže range(1000000) používá stejné malé, konstantní množství paměti jako range(10). Hodnoty se během iterace počítají jedna po druhé.

Použijte operátor in: 5 in range(0, 10) vrací True. Pro objekty typu range platí Python provádí tento test členství s rychlou aritmetikou v konstantním čase, spíše než skenováním každého prvku, takže zůstává efektivní i na obrovských rozsazích.

Kód strojového učení používá range() k procházení trénovacích epoch, iteraci minidávek a vytváření mřížek hyperparametrů. Funkce arange() a linspace() v NumPy rozšiřují tuto funkci na rozsahy s plovoucí desetinnou čárkou pro plány rychlosti učení a prahové hodnoty běžné v experimentech s umělou inteligencí.

Ano. Asistenti pro kódování s umělou inteligencí, jako jsou smyčky GitHub Copilot založené na automatickém doplňování range() z komentáře nebo názvu funkce, a agentické nástroje dokáží refaktorovat indexové smyčky do čistších vzorů enumerate() nebo comprehension, i když vygenerované hranice stále vyžadují rychlou kontrolu.

Shrňte tento příspěvek takto: