Python range() Funkcja: Float, Lista, For Przykłady pętli
Co to jest Python Zakres?
Python range() to wbudowana funkcja dostępna w Python od Python(3.x) i podaje sekwencję liczb na podstawie podanego indeksu początkowego i końcowego. W przypadku braku podanego indeksu początkowego indeks jest uważany za 0 i będzie zwiększał wartość o 1 aż do indeksu końcowego.
Na przykład range(5) wyświetli wartości 0,1,2,3,4. The Python range() to bardzo przydatne polecenie, używane najczęściej, gdy trzeba wykonać iterację za pomocą pętli for.
Składnia
range(start, stop, step)
parametry
- rozpocząć: (opcjonalnie) Indeks początkowy jest liczbą całkowitą i jeśli nie został podany, wartością domyślną jest 0.
- przestań Indeks stopu 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 niż wartość końcowa.
- krok: (opcjonalne). Wartość kroku to liczba, o którą należy zwiększyć kolejną liczbę z zakresu, domyślnie jest to 1.
Wartość zwracana
Wartością zwracaną jest sekwencja liczb od podanego indeksu początkowego do końcowego.
Python range() Funkcja i historia
Python Funkcja range() została wprowadzona od wersji 3 języka Python, wcześniej funkcją była xrange().
Zarówno range jak i xrange() służą do tworzenia sekwencji liczb.
Poniżej przedstawiono różnice między range i xrange():
zasięg() | xzakres() |
---|---|
Funkcja range() zwraca sekwencję liczb i listę liczb. | Funkcja xrange() zwraca obiekt generatora, który należy wykonać w pętli for, aby uzyskać wartości. |
Funkcja range() zwraca listę. | xrange() zwraca obiekt generatora. |
Metoda range() zużywa więcej pamięci, ponieważ zwrócona lista musi być przechowywana w porównaniu z metodą xrange(). | Ponieważ xrange() zwraca obiekt generatora, nie zwraca wartości od razu. Aby je uzyskać, należy użyć pętli for. |
Zużycie pamięci jest większe, dlatego wykonanie kodu jest powolne podczas pracy na ogromnym zestawie danych. | Wykonanie kodu jest szybsze przy użyciu xrange(). |
Korzystanie z zakresu()
Ten przykład pokazuje, jak wydrukować wartości od 0 do 9 za pomocą funkcji range().
Wartość używana w zakresie wynosi 10, więc wynik wynosi 0 1 2 3 4 5 6 7 8 9
Ponieważ start nie jest podany, start jest traktowany jako 0, a ostatnia wartość jest podawana aż do 9. Ostatnia wartość jest zawsze o 1 mniejsza od podanej wartości, czyli stop-1.
for i in range(10): print(i, end =" ")
Wyjście:
0 1 2 3 4 5 6 7 8 9
Używanie startu i stopu w range()
W kodzie wartość początkowa wynosi 3, a wartość końcowa 10. Tutaj indeks początkowy wynosi 3, więc sekwencja liczb rozpocznie się od 3 do wartości końcowej. Ostatnia wartość w sekwencji będzie o 1 mniejsza od wartości końcowej 10-1 = 9.
for i in range(3, 10): print(i, end =" ")
Wyjście:
3 4 5 6 7 8 9
Używanie startu, stopu i kroku
Wartość początkowa wynosi 3, więc sekwencja liczb rozpocznie się od 3. Wartość końcowa wynosi 10, więc sekwencja liczb zatrzyma się na (10-1), czyli 9. Krok wynosi 2, więc każda wartość w sekwencji będzie zwiększana o 2. Jeśli wartość kroku nie zostanie podana, wartość kroku domyślnie wynosi 1.
for i in range(3, 10, 2): print(i, end =" ")
Wyjście:
3 5 7 9
Jak dotąd widzieliśmy, jak funkcja range() podaje zwiększoną wartość podanej wartości stopu. Spróbujmy teraz na przykładzie uzyskać pomniejszoną wartość z podanego zakresu.
Zwiększanie wartości w zakresie za pomocą kroku dodatniego.
Krok parametru w range() może służyć do zwiększania/zmniejszania wartości. Domyślnie jest to wartość dodatnia 1. Zatem zawsze będzie dawać wartości zwiększone.
Wartość kroku musi być dodatnia, jeśli chcesz, aby wartości wyjściowe były zwiększane.
for i in range(1, 30, 5): print(i, end =" ")
Wyjście:
1 6 11 16 21 26
Reverse Range: Zmniejszanie wartości przy użyciu kroku ujemnego
Krok parametru z wartością ujemną w zakresie() może zostać użyty do uzyskania zmniejszonych wartości. W poniższym przykładzie wartość kroku jest ujemna, więc sygnał wyjściowy będzie zmniejszany 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 wynosi 15, wartość końcowa wynosi 5, a wartość kroku jest liczbą ujemną, tj. -1. W przypadku powyższych danych wejściowych funkcja range() będzie zmniejszać wartość od 15 w górę, aż osiągnie wartość stop, ale tutaj różnica polega na tym, że ostatnią wartością będzie stop + 1.
Używanie liczb zmiennoprzecinkowych w Python zasięg()
Teraz zajmiemy się funkcją range() używając liczb zmiennoprzecinkowych.
Przykład:
for i in range(10.5): print(i, end =" ")
W powyższym przykładzie użyliśmy wartości stopu jako 10.5.
Dane wyjściowe to:
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 zwraca błąd, ponieważ funkcja range() nie obsługuje liczb zmiennoprzecinkowych dla wartości start, stop i step.
Używanie pętli for z Python zasięg()
W tym przykładzie użyjemy tablicy liczb i zobaczymy, jak iterować tablicę 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 stopu. Pętla for będzie iterować aż do wartości zatrzymania, tj. długości tablicy, która będzie wynosić 4, ponieważ mamy cztery elementy na liście arr. Wartość początkowa będzie wynosić 0, a krok będzie wynosił 1. Zatem wartości zaczną się od 0 i zatrzymają na 3, tj. długość tablicy -1, co oznacza 4 -1 = 3.
Korzystanie z Python range() jako listę
W tym przykładzie zobaczymy, jak wykorzystać wynik 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 wynik jest w formacie listy. Nie było potrzeby zapętlania funkcji range() i za pomocą metody list() mogliśmy bezpośrednio przekonwertować dane wyjściowe z zakresu na format listy.
Używanie znaków w zakresie Pythona()
Do tej pory używaliśmy liczb całkowitych w python range(). Widzieliśmy również, że liczby zmiennoprzecinkowe nie są obsługiwane w python range. Spróbujmy zobaczyć, co się stanie, gdy użyjemy 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 <module> for c in range ('z'): TypeError: 'str' object cannot be interpreted as an integer
Zgłasza błąd informujący, że ciągu znaków nie można interpretować jako liczby całkowitej.
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 użyć pętli for, aby pobrać wartości z zakresu lub użyć indeksu, aby uzyskać dostęp do elementów z zakresu ().
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 zakresem, aby uzyskać wartość dostępną w tej pozycji. Jeśli wartość zakresu wynosi 5, aby uzyskać wartość początkową, możesz użyć zakresu (5) [0] i następnej wartości zakresu (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:
The first element in range is = 0 The second element in range is = 1 The first element in range is = 4
Korzystanie z listy()
Ta metoda wydrukuje wszystkie elementy z zakresu(). Używając list() zwróci elementy z zakresu() w formacie listy.
Przykład:
print(list(range(10)))
Wyjście:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Daje wynik listy dla podanego zakresu.
Przykład: Uzyskaj liczby parzyste za pomocą range()
Użycie range() spowoduje pobranie listy liczb parzystych w zakresie podanym jako dane wejściowe. Parametry range() to start 2, stop 20 i step 2, więc wartości zostaną zwiększone o 2 i będą dawać liczby parzyste aż do stop-2.
Przykład:
for i in range(2, 20, 2): print(i, end =" ")
Wyjście:
2 4 6 8 10 12 14 16 18
Łączenie wyników dwóch zakresów().
W tym przykładzie połączymy 2 funkcje range() za pomocą funkcji chain() modułu itertools.
Przykład:
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=" ")
Wyjście:
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
Używanie zakresu() z NumPy
Moduł NumPy ma funkcję arange(), która działa i daje podobne wyniki jak range(). Funkcja aranżacyjna przyjmuje te same parametry, co range().
Składnia:
arange(start, stop, step)
Aby pracować z NumPy, wykonaj kroki podane poniżej.
Krok 1: Importuj moduł NumPy
import numpy
W przypadku, gdy podczas wykonywania pojawi się błąd informujący, że nie znaleziono modułu numpy, musisz zainstalować moduł, jak pokazano w kroku 2.
Krok 2: Zainstaluj NumPy
pip install numpy
Krok 3: Działający przykład 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 NumPy arange()
Nie można uzyskać sekwencji zmiennoprzecinkowej za pomocą funkcji range(), ale można to zrobić za pomocą NumPy arange().
Przykład:
Zakres, który chcemy, wynosi 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 nieco dziwny, niektóre liczby zmiennoprzecinkowe są wyświetlane z 16 miejscami dziesiętnymi. Dzieje się tak ze względu na złożoność przechowywania dziesiętnych liczb zmiennoprzecinkowych w formacie binarnym. Możesz również zaokrąglić wartości, jeśli to konieczne, i ograniczyć je do potrzebnych miejsc dziesiętnych.
Podsumowanie
- Python range() to wbudowana funkcja dostępna w Python od Python(3.x) i podaje sekwencję liczb na podstawie podanego indeksu początkowego i końcowego. W przypadku braku podanego indeksu początkowego indeks jest uważany za 0 i będzie zwiększał wartość do indeksu końcowego.
- Python range() został wprowadzony z wersja Pythona 3, wcześniej funkcją była xrange().
- Funkcja range() podaje sekwencję liczb i zwraca listę liczb. Funkcja xrange() podaje obiekt generatora, który musi zostać zapętlony 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. Zatem zawsze będzie dawać wartości zwiększone.
- Python zwraca błąd dla liczb zmiennoprzecinkowych, ponieważ funkcja range() obsługuje tylko wartości całkowite.
- Dostęp do wartości z zakresu() można uzyskać za pomocą pętli for, używając indeksu i listy()
- Moduł NumPy ma funkcję arange(), która działa i daje podobne wyniki jak range(). Funkcja arange() przyjmuje te same parametry co range().
- Możliwe jest uzyskanie sekwencji zmiennoprzecinkowej NumPy arange(), która nie jest obsługiwana przy użyciu funkcji range().