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