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.

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.
