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