Czym jest funkcja range() w Python?
Python range() to wbudowana funkcja dostępna w Pythonie od wersji 3.x, która podaje sekwencję liczb na podstawie podanego indeksu początku i końca. W przypadku, gdy indeks początkowy nie jest podany, indeks jest traktowany jako 0 i będzie zwiększał wartość o 1 aż do indeksu stopu.
Na przykład range(5) wygeneruje wartości 0,1,2,3,4 . Python range() jest bardzo przydatnym poleceniem i najczęściej używanym, gdy musisz iterować za pomocą pętli for.
Składnia
range(start, stop, step)
Parametry
- start: (opcjonalnie) Indeks początkowy jest liczbą całkowitą i jeśli nie zostanie podany, domyślną wartością jest 0.
- stop: Indeks zatrzymania decyduje o wartości, przy której funkcja zakresu musi się zatrzymać. Jest to obowiązkowe wejście do funkcji zakresu. Ostatnia wartość będzie zawsze o 1 mniejsza od wartości zatrzymania.
- step: (opcjonalne). Wartość kroku to numer, o który należy zwiększyć kolejny numer zakresu, domyślnie jest to 1. Wartość zwrotu: Wartość zwracana to sekwencja liczb od podanego indeksu od początku do końca.
Korzystanie z range()
Ten przykład pokazuje, jak wydrukować wartości od 0 do 9 za pomocą funkcji range().
Wartość użyta w zakresie to 10, więc wyjście to 0 1 2 3 4 5 6 7 8 9
Ponieważ start nie jest podany, start jest traktowany jako 0, a ostatnia wartość jest podana do 9. Ostatnia wartość jest zawsze o 1 mniejsza niż podana wartość, tj. stop-1.
for i in range(10): print(i, end =" ")
Wyjście:
0 1 2 3 4 5 6 7 8 9
Używanie start i stop w funkcji range()
W kodzie wartość początkowa to 3, a wartość stopu to 10. W poniższej funkcji indeks początkowy to 3, więc sekwencja liczb rozpocznie się od 3 do wartości stopu. Ostatnia wartość w sekwencji będzie o 1 mniejsza niż wartość zatrzymania 10-1 = 9.
for i in range(3, 10): print(i, end =" ")
Wyjście:
3 4 5 6 7 8 9
Używanie start, stop i step
Wartość początkowa to 3, więc sekwencja liczb zacznie się od 3. Wartość końcowa to 10, więc sekwencja liczb zakończy się na (10-1), tj. 9. Krok to 2, więc każda wartość w sekwencji będzie należy zwiększyć o 2. Jeśli wartość kroku nie jest podana, wartość kroku domyślnie wynosi 1.
for i in range(3, 10, 2): print(i, end =" ")
Wyjscie:
3 5 7 9
Do tej pory widzieliśmy, jak funkcja range() podaje wartość inkrementowaną dla podanej wartości stopu. Spróbujmy teraz wypróbować przykład, aby uzyskać zmniejszoną wartość w podanym zakresie.
Zwiększanie wartości w zakresie za pomocą dodatniego kroku.
Krok parametru w range() może służyć do zwiększania/zmniejszania wartości. Domyślnie jest to wartość dodatnia 1. Więc zawsze będzie dawać wartości zwiększone.
Wartość kroku musi być dodatnia w przypadku, gdy chcesz chcieć zwiększyć wartości jako dane wyjściowe.
for i in range(1, 30, 5): print(i, end =" ")
Wyjście:
1 6 11 16 21 26
Zmniejszanie wartości za pomocą kroku ujemnego.
Krok parametru z ujemną wartością w range() może być użyty do uzyskania zmniejszonych wartości. W poniższym przykładzie wartość kroku jest ujemna, więc wyjście będzie zmniejszane od podanej wartości zakresu.
for i in range(15, 5, -1): print(i, end =" ")
Wyjście:
15 14 13 12 11 10 9 8 7 6
Wartość początkowa to 15, wartość stopu to 5, a wartość kroku to liczba ujemna, tj. -1. Z powyższymi wejściami funkcja range() zmniejszy wartość od 15 do osiągnięcia wartości stopu, ale tutaj różnica polega na tym, że ostatnia wartość będzie stop + 1.
Używanie liczb zmiennoprzecinkowych w funkcji range()
Popracujmy teraz nad range() przy użyciu liczb zmiennoprzecinkowych.
Przykład:
for i in range(10.5): print(i, end =" ")
W powyższym przykładzie użyliśmy wartości stop jako 10,5.
Wyjście:
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 wyświetla błąd, ponieważ funkcja range() nie obsługuje liczb zmiennoprzecinkowych dla początku, zatrzymania i kroku.
Używanie pętli for w range()
W tym przykładzie użyjemy tablicy liczb i zobaczmy, jak używać iteracji tablicy wewnątrz pętli for za pomocą range()
Przykład:
arr_list = ['Mysql', 'Mongodb', 'PostgreSQL', 'Firebase'] for i in range(len(arr_list)): print(arr_list[i], end =" ")
Wyjście:
MysqlMongodb PostgreSQL Firebase
W powyższym przykładzie użyliśmy len(arr_list) jako wartości zatrzymania. Pętla for będzie iterować aż do wartości zatrzymania, tj. długości tablicy, a to będzie 4, ponieważ mamy cztery pozycje na arr_list. Wartość początkowa będzie wynosić 0, a krok będzie równy 1. Tak więc wartości zaczną się od 0 i zatrzymają się na 3, tj. długości tablicy -1, co oznacza 4 -1 = 3.
Używanie Pythona range() jako listy
W tym przykładzie zobaczymy, jak wykorzystać dane wyjściowe z zakresu jako listę.
Przykład:
print(list(range(10)))
Wyjście:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Możesz zobaczyć, że dane wyjściowe są w formacie listy. Nie trzeba było zapętlać funkcji range() i za pomocą metody list() mogliśmy bezpośrednio przekonwertować dane wyjściowe z formatu range do formatu listy.
Używanie znaków z w range()
Do tej pory używaliśmy liczb całkowitych w range(). Widzieliśmy również, że liczby zmiennoprzecinkowe nie są obsługiwane w zakresie Pythona. Spróbujmy zobaczyć wynik, co się dzieje, gdy używamy znaków.
Przykład:
for c in range ('z'): print(c, end =" ")
Wyjście:
Traceback (most recent call last): File "python_range.py", line 1, in for c in range ('z'): TypeError: 'str' object cannot be interpreted as an integer
Program zgłasza błąd mówiący, że łańcuch nie może być interpretowany jako liczba całkowita.
Aby uzyskać listę alfabetów, możesz dostosować kod i uzyskać żądane dane wyjściowe, jak pokazano poniżej:
Przykład:
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)))
Wyjście:
['a', 'b', 'c', 'd', 'e', 'f', 'g']
Jak uzyskać dostęp do elementów zakresu
Możesz skorzystać z pętli for, aby uzyskać wartości z zakresu lub użyć indeksu, aby uzyskać dostęp do elementów z range().
Korzystanie z pętli for
Przykład:
for i in range(6): print(i)
Wyjście:
0 1 2 3 4 5
Korzystanie z indeksu
Indeks jest używany z funkcją range, aby uzyskać wartość dostępną na tej pozycji. Jeśli wartość zakresu wynosi 5, aby uzyskać wartość początkową, możesz użyć range(5)[0] i następnej wartości range(5)[1] i tak dalej.
Przykład:
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)
Wyjście:
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)
Korzystanie z list()
Ta metoda wypisze wszystkie elementy z range(). Używając list() zwróci elementy z range() w formacie listy.
Przykład:
print(list(range(10)))
Wyjście:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Używanie range() Z NumPy
Moduł NumPy posiada funkcję arange(), która działa i daje podobne wyniki jak range(). Aranżacja() przyjmuje takie same parametry jak range().
Składnia:
arange(start, stop, step)
Aby pracować z NumPy, wykonaj poniższe czynności.
Krok 1: Importuj moduł NumPy
import numpy
W przypadku gdy zostanie wyświetlony błąd mówiący, że nie znaleziono modułu numpy, musisz zainstalować moduł, jak pokazano w kroku 2.
Krok 2: Zainstaluj NumPy
pip install numpy
Krok 3: Przykład działania arange() przy użyciu NumPy
import numpy as np for i in np.arange(10): print(i, end =" ")
Wyjście:
0 1 2 3 4 5 6 7 8 9
Liczby zmiennoprzecinkowe przy użyciu funkcji NumPy arange()
Nie jest możliwe uzyskanie sekwencji zmiennoprzecinkowej za pomocą range(), ale jest to możliwe za pomocą NumPy arange().
Przykład:
Pożądany zakres to od 0,5 do 1,5. Wartość będzie zwiększana o 0,2.
import numpy as np for i in np.arange(0.5, 1.5, 0.2): print(i, end =" ")
Wyjście:
0.5 0.7 0.8999999999999999 1.0999999999999999 1.2999999999999998
Wynik, który otrzymujemy, jest trochę dziwny, niektóre liczby zmiennoprzecinkowe są wyświetlane z 16 miejscami po przecinku. Dzieje się tak ze względu na złożoność przechowywania liczb dziesiętnych zmiennoprzecinkowych w formacie binarnym. W razie potrzeby możesz również zaokrąglić wartości i ograniczyć je do wymaganych miejsc dziesiętnych.
Podsumowanie
- range() to wbudowana funkcja dostępna w Pythonie od Pythona (3.x), która podaje sekwencję liczb na podstawie podanego indeksu początku i końca. W przypadku, gdy indeks początkowy nie jest podany, indeks jest traktowany jako 0 i będzie zwiększał wartość aż do indeksu stopu.
- range() został wprowadzony z Pythona w wersji 3, zanim funkcja xrange() była funkcją.
- range() podaje sekwencję liczb i zwraca listę liczb. Funkcja xrange() udostępnia obiekt generatora, który należy zapętlić w pętli for, aby uzyskać wartości.
- Krok parametru w range() może służyć do zwiększania/zmniejszania wartości. Domyślnie jest to wartość dodatnia 1. Więc zawsze będzie dawać wartości zwiększone.
- Python wyświetla błąd dla liczb zmiennoprzecinkowych, ponieważ funkcja range() obsługuje tylko wartości całkowite.
- Dostęp do wartości z range() można uzyskać za pomocą pętli for, za pomocą index i list()
- Moduł NumPy posiada funkcję arange(), która działa i daje podobne wyniki jak range(). Arange() przyjmuje te same parametry co range().
- Możliwe jest uzyskanie sekwencji zmiennoprzecinkowej NumPy arange(), która nie jest obsługiwana przy użyciu range().