Co to jest zakres Pythona?
Python range () to funkcja wbudowana dostępna w Pythonie z Pythona (3.x) i podaje sekwencję liczb na podstawie podanego indeksu startu i stopu. W przypadku, gdy nie podano indeksu początkowego, indeks jest traktowany jako 0 i będzie zwiększał wartość o 1, aż do indeksu zatrzymania.
Na przykład range (5) wyświetli wartości 0, 1, 2, 3, 4. Python range () jest bardzo użytecznym poleceniem i najczęściej używanym, gdy musisz iterować za pomocą pętli for.
W tym samouczku dowiesz się:
- Co to jest zakres Pythona?
- Składnia
- Python range () Funkcja i historia
- Korzystanie z zakresu ()
- Korzystanie z funkcji start and stop in range ()
- Korzystanie z funkcji start, stop i step
- Zwiększanie wartości w zakresie za pomocą dodatniego kroku.
- Odwrotny zakres: Zmniejszanie wartości za pomocą kroku ujemnego.
- Używanie liczb zmiennoprzecinkowych w zakresie Pythona ()
- Używanie pętli for z Python range ()
- Używanie Pythona range () jako listy
- Używanie znaków w zakresie Pythona ()
- Jak uzyskać dostęp do elementów zakresu
- Przykład: uzyskaj liczby parzyste za pomocą range ()
- Scalanie wyjść dwuzakresowych ()
- Używanie range () z NumPy
Składnia
range(start, stop, step)
Parametry
- start: (opcjonalne) Indeks początkowy jest liczbą całkowitą, a jeśli nie zostanie podany, wartością domyślną jest 0.
- stop: Indeks stop decyduje o wartości, przy której funkcja zakresu ma się zatrzymać. Jest to obowiązkowe dane wejściowe do funkcji zakresu. Ostatnia wartość będzie zawsze o 1 mniejsza od wartości zatrzymania.
- step: (opcjonalne) Wartość kroku to liczba, o którą należy zwiększyć kolejną liczbę w zakresie, domyślnie jest to 1.
Wartość zwracana:
Wartość zwracana to sekwencja liczb od podanego indeksu początku do końca.
Python range () Funkcja i historia
Python range () został wprowadzony z pythona w wersji 3, zanim funkcja xrange () była.
Zarówno range, jak i xrange () są używane do tworzenia sekwencji liczb.
Oto różnica między range i xrange ():
zasięg() | xrange () |
Zakres () podaje sekwencję liczb i zwraca listę liczb. | Funkcja xrange () daje obiekt generatora, który należy zapętlić w pętli for, aby uzyskać wartości. |
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 xrange (). | Ponieważ xrange () zwraca obiekt generatora, nie podaje wartości natychmiast i musi być użyte wewnątrz pętli for, aby uzyskać wartości. |
Zużycie pamięci jest większe, dlatego wykonywanie kodu jest powolne podczas pracy z ogromnym zestawem danych. | Wykonanie kodu jest szybsze dzięki xrange (). |
Korzystanie z zakresu ()
Ten przykład pokazuje, jak wydrukować wartości od 0 do 9 za pomocą range ().
Wartość użyta w zakresie to 10, więc wyjście to 0 1 2 3 4 5 6 7 8 9
Ponieważ początek nie jest podany, początek traktowany jest jako 0, a ostatnia wartość jest podawana do 9. Ostatnia wartość jest zawsze o 1 mniejsza od podanej wartości, tj. Stop-1.
for i in range(10):print(i, end =" ")
Wynik:
0 1 2 3 4 5 6 7 8 9
Korzystanie z funkcji start and stop in range ()
W kodzie wartość początkowa to 3, a wartość zatrzymania to 10. Tutaj indeks początkowy to 3, więc sekwencja liczb będzie się zaczynała od 3 do wartości końcowej. Ostatnia wartość w sekwencji będzie o 1 mniejsza niż wartość zatrzymania 10-1 = 9.
for i in range(3, 10):print(i, end =" ")
Wynik:
3 4 5 6 7 8 9
Korzystanie z funkcji start, stop i step
Wartość początkowa to 3, więc sekwencja liczb rozpocznie się od 3. Wartość zatrzymania 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 być zwiększane o 2. Jeżeli nie podano wartości kroku, wartość kroku przyjmuje wartość domyślną 1.
for i in range(3, 10, 2):print(i, end =" ")
Wynik:
3 5 7 9
Do tej pory widzieliśmy, jak funkcja range () podaje zwiększoną wartość dla podanej wartości stop. Wypróbujmy teraz przykład, aby uzyskać zmniejszoną wartość w podanym zakresie.
Zwiększanie wartości w zakresie za pomocą dodatniego kroku.
Parametr step in range () może służyć do zwiększania / zmniejszania wartości. Domyślnie jest to wartość dodatnia 1. Dlatego zawsze będzie podawać wartości zwiększone.
Wartość kroku musi być dodatnia, na wypadek, gdybyś chciał, aby wartości przyrostowe były wartością wyjściową.
for i in range(1, 30, 5):print(i, end =" ")
Wynik:
1 6 11 16 21 26
Odwrotny zakres: Zmniejszanie wartości za pomocą kroku ujemnego.
Parametr step z ujemną wartością w zakresie () 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 =" ")
Wynik:
15 14 13 12 11 10 9 8 7 6
Wartość początkowa to 15, wartość zatrzymania to 5, a wartość kroku to liczba ujemna, tj. -1. Przy powyższych wejściach funkcja range () będzie zmniejszać wartość od 15 wzwyż, aż osiągnie wartość stop, ale tutaj różnica jest ostatnią wartością stop + 1.
Używanie liczb zmiennoprzecinkowych w zakresie Pythona ()
Popracujmy teraz nad 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 stop jako 10,5.
Wynik to:
Traceback (most recent call last):File "python_range.py", line 1, infor i in range(10.5):TypeError: 'float' object cannot be interpreted as an integer
Python zgłasza błąd, ponieważ funkcja range () nie obsługuje liczb zmiennoprzecinkowych dla start, stop i step.
Używanie pętli for z Python range ()
W tym przykładzie użyjemy tablicy liczb i zobaczmy, jak użyć 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 =" ")
Wynik:
MysqlMongodb PostgreSQL Firebase
W powyższym przykładzie użyliśmy len (arr_list) jako wartość zatrzymania. Pętla for będzie iterować aż do wartości stopu, tj. Długości tablicy i będzie to 4, ponieważ mamy cztery elementy w arr_list. Wartość początkowa będzie wynosić 0, a krok będzie równy 1, więc wartości będą rozpoczynać się od 0 i kończyć na 3, tj. Długość 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)))
Wynik:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Możesz zobaczyć, że wynik jest formatem listy. Nie było potrzeby zapętlania zakresu (), a przy użyciu 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 pythonie range (). Widzieliśmy również, że liczby zmiennoprzecinkowe nie są obsługiwane w zakresie Pythona. Spróbujmy zobaczyć, co się dzieje, kiedy używamy znaków.
Przykład:
for c in range ('z'):print(c, end =" ")
Wynik:
Traceback (most recent call last):File "python_range.py", line 1, infor c in range ('z'):TypeError: 'str' object cannot be interpreted as an integer
Zgłasza błąd informujący, że ciąg nie może być zinterpretowany 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)))
Wynik:
['a', 'b', 'c', 'd', 'e', 'f', 'g']
Jak uzyskać dostęp do elementów zakresu
Możesz skorzystać z pętli for, aby pobrać 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)
Wynik:
012345
Korzystanie z index
Indeks jest używany z zakresem, 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ępnego zakresu wartości (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)
Wynik:
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 listy ()
Ta metoda wypisze wszystkie elementy z zakresu (). Używając list (), zwróci elementy z range () w formacie listy.
Przykład:
print(list(range(10)))
Wynik:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Daje wyjście listy dla podanego zakresu.
Przykład: uzyskaj liczby parzyste za pomocą range ()
Użycie range () spowoduje wyświetlenie listy parzystych liczb z zakresu podanego jako dane wejściowe. Parametry dla range () to, start to 2, stop to 20, a step to 2, więc wartości będą zwiększane o 2 i będą dawały liczby parzyste aż do stop-2.
Przykład:
for i in range(2, 20, 2):print(i, end =" ")
Wynik:
2 4 6 8 10 12 14 16 18
Scalanie wyjść dwuzakresowych ()
W tym przykładzie połączymy 2 funkcje range () za pomocą funkcji chain () modułu itertools.
Przykład:
from itertools import chainprint("Merging two range into one")frange =chain(range(10), range(10, 20, 1))for i in frange:print(i, end=" ")
Wynik:
Merging two range into one0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Używanie range () z NumPy
Moduł NumPy ma funkcję arange (), która działa i daje podobne wyniki jak range (). Arrange () 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 pojawia się błąd informujący, że moduł numpy nie został znaleziony, musisz zainstalować moduł, jak pokazano w kroku 2.
Krok 2 : Zainstaluj NumPy
pip install numpy
Krok 3 : Przykład roboczy arange () przy użyciu NumPy
import numpy as npfor i in np.arange(10):print(i, end =" ")
Wynik:
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:
Wymagany zakres to od 0,5 do 1,5. Wartość będzie zwiększana o 0,2.
import numpy as npfor i in np.arange(0.5, 1.5, 0.2):print(i, end =" ")
Wynik:
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 dziesiętnych liczb zmiennoprzecinkowych w formacie binarnym. W razie potrzeby możesz również zaokrąglić wartości i ograniczyć je do potrzebnych miejsc dziesiętnych.
Podsumowanie:
- Python range () to funkcja wbudowana dostępna w Pythonie z Pythona (3.x) i podaje sekwencję liczb na podstawie podanego indeksu startu i stopu. W przypadku, gdy nie podano indeksu początkowego, indeks jest traktowany jako 0 i będzie zwiększał wartość aż do indeksu zatrzymania.
- Python range () został wprowadzony z pythona w wersji 3, zanim funkcja xrange () była.
- Zakres () podaje sekwencję liczb i zwraca listę liczb. Funkcja xrange () daje obiekt generatora, który należy zapętlić w pętli for, aby uzyskać wartości.
- Parametr step in range () może służyć do zwiększania / zmniejszania wartości. Domyślnie jest to wartość dodatnia 1. Dlatego zawsze będzie podawać wartości zwiększone.
- Python podaje 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, za pomocą indeksu i listy ()
- Moduł NumPy ma 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 funkcji range ().