Python range() Funkce: Float, List, Příklady smyček For
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 range(5) vám vypíše hodnoty 0,1,2,3,4 .The Python range() je velmi užitečný příkaz a většinou se používá, když musíte iterovat pomocí cyklu for.
Syntax
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: Stop index rozhoduje o hodnotě, na které se má funkce rozsahu zastavit. Je to povinný vstup do funkce rozsahu. Poslední hodnota bude vždy o 1 menší než koncová hodnota.
- krok: (nepovinné). Hodnota kroku je číslo, o které se musí zvýšit další číslo v rozsahu, ve výchozím nastavení 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() bylo zavedeno od pythonu verze 3, předtím byla funkcí xrange().
Rozsah i xrange() se používají k vytvoření posloupnosti čísel.
Níže je uveden rozdíl mezi rozsahem 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(). | Vzhledem k tomu, že xrange() vrací objekt generátoru, nedává hodnoty okamžitě a k získání hodnot musí být použito uvnitř for-loop. |
Využití paměti je větší, a proto je provádění kódu pomalé při práci s velkým souborem dat. | 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 start není zadán, start je považován za 0 a poslední hodnota je dá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 je 10. Zde je počáteční index 3, takže sekvence čísel bude začínat od 3 do koncové hodnoty. Poslední hodnota v sekvenci 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 sekvence čísel začne na 3. Koncová hodnota je 10, takže sekvence čísel se zastaví na (10-1), tj. 9. Krok je 2, takže každá hodnota v sekvenci bude zvýšit o 2. Pokud není zadaná hodnota kroku, výchozí hodnota kroku je 1.
for i in range(3, 10, 2): print(i, end =" ")
Výstup:
3 5 7 9
Doposud jsme viděli, jak funkce range() poskytuje zvýšenou hodnotu pro zadanou hodnotu stop. Zkusme nyní na příkladu získat dekrementovanou hodnotu v daném rozsahu.
Zvyšování hodnot v rozsahu pomocí kladného kroku.
Parametr step v range() lze použít ke zvýšení/snížení hodnot. Ve výchozím nastavení je to kladná hodnota 1. Bude tedy vždy dávat zvýšené hodnoty.
Hodnota kroku musí být kladná, pokud chcete jako výstup chtít zvýšené hodnoty.
for i in range(1, 30, 5): print(i, end =" ")
Výstup:
1 6 11 16 21 26
Reverse Rozsah: Snížení hodnot pomocí záporného kroku
Krok parametru 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 kroku záporná, takže výstup bude snížený z uvedené 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 hodnota kroku 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, ž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 hodnotu stop jako 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 dává 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 podívejme se, jak použít iteraci pole uvnitř for-loop pomocí 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). Cyklus for bude iterovat až do hodnoty stop, tj. délky pole, a to bude 4, protože v seznamu arr_list máme čtyři položky. Počáteční hodnota bude 0 a krok bude 1. Takže hodnoty začnou od 0 a zastaví se 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()
Pomocí range() získáte seznam sudých čísel v rozsahu daném jako vstup. Parametry pro range() jsou, start je 2, stop je 20 a krok je 2, takže hodnoty se zvýší o 2 a budou dávat sudá čísla až do konce-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í 2 funkce range() pomocí funkce itertools module chain().
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 poskytuje podobný výstup jako range(). Aranžmá() má stejné parametry jako range().
Syntaxe:
arange(start, stop, step)
Chcete-li pracovat s NumPy, postupujte podle kroků uvedených níže.
Krok 1: Import modulu NumPy
import numpy
Incase během provádění zobrazí chybu, že numpy modul nebyl nalezen, musíte nainstalovat modul, jak je znázorněno v kroku 2.
Krok 2: Nainstalujte 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 pohyblivou řádovou čárkou pomocí range(), ale je to možné pomocí NumPy arange().
Příklad:
Rozsah, který chceme, je od 0.5 do 1.5. Hodnota se zvýší 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ý dostáváme, je trochu divný, některá čísla s plovoucími čísly jsou zobrazena s 16 desetinnými místy. To se děje kvůli složitosti ukládání desetinných plovoucích čísel do binárního formátu. V případě potřeby můžete hodnoty také zaokrouhlit a omezit je na potřebná desetinná místa.
Shrnutí
- 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 až do koncového indexu.
- Python range() byl zaveden z python verze 3, před tím byla funkce 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.
- Parametr step v range() lze použít ke zvýšení/snížení hodnot. Ve výchozím nastavení je to kladná hodnota 1. Bude tedy vždy dávat zvýšené hodnoty.
- Python dává chybu pro čísla s plovoucí desetinnou čárkou, protože funkce range() podporuje pouze celočíselné hodnoty.
- K hodnotám z range() lze přistupovat pomocí for-loop, pomocí index a list()
- Modul NumPy má funkci arange(), která funguje a poskytuje podobný výstup jako range(). Arange() má stejné parametry jako range().
- Je možné získat posloupnost NumPy arange() s plovoucí desetinnou čárkou, která není podporována pomocí range().