Darmowy Kurs Python 2022
O lekcji

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().
Pliki ćwiczeń
Nie znaleziono załącznika
Nie znaleziono załącznika