Range() i xrange() to dwie funkcje, których można użyć do wykonania określonej liczby iteracji Do pętle w Pythonie. W Python3 , nie ma xrange, ale funkcja range zachowuje się jak xrange w Pythonie2. Jeśli chcesz napisać kod, który będzie działał zarówno w Pythonie2, jak i Python3, powinieneś użyć funkcji range(). Obydwa są realizowane na różne sposoby i mają z nimi różne cechy. Punktami porównawczymi są:
- Typ zwrotu
- Pamięć
- Użycie operacji
- Prędkość
Funkcja range() w Pythonie
The Funkcja range() w Pythonie zwraca ciąg liczb z podanego zakresu. Najczęstszym jego zastosowaniem jest iteracja sekwencji po sekwencji liczb za pomocą pętli Pythona.
Funkcja xrange() w Pythonie
Funkcja xrange() w Pythonie służy do generowania sekwencji liczb, podobnie jak funkcja range() w Pythonie. Funkcja xrange() w Pythonie jest używana tylko w Pythonie 2.x, podczas gdy funkcja range() w Pythonie jest używana w Pythonie 3.x.
Powrót Wpisz zakres() vs xrange()
Ten xzakres() funkcja zwraca obiekt generatora których można używać do wyświetlania liczb wyłącznie poprzez pętlę. Jedyny konkretny zakres jest wyświetlany na żądanie i dlatego nazywany jest leniwa ocena , podczas gdy w Pythonie funkcja range() zwraca obiekt zakresu (typ iterowalny).
Python3
# initializing a with range()> a>=> range>(>1>,>10000>)> # initializing a with xrange()> x>=> xrange>(>1>,>10000>)> # testing the type of a> print>(>'The return type of range() is : '>)> print>(>type>(a))> # testing the type of x> print>(>'The return type of xrange() is : '>)> print>(>type>(x))> |
>
dzielenie ciągów C++
>
Wyjście:
The return type of range() is : The return type of xrange() is :>
Szybkość funkcji xrange() i range().
Zmienna przechowująca zakres utworzony przez zakres() zajmuje więcej pamięci w porównaniu do zmiennej przechowującej zakres za pomocą xrange(). Podstawowym powodem jest to, że typem zwracanym przez range() jest lista, a xrange() to obiekt xrange().
Python3
import> sys> # initializing a with range()> a>=> range>(>1>,>10000>)> # initializing a with xrange()> x>=> xrange>(>1>,>10000>)> # testing the size of a> # range() takes more memory> print> (>'The size allotted using range() is : '>)> print> (sys.getsizeof(a))> # testing the size of x> # xrange() takes less memory> print> (>'The size allotted using xrange() is : '>)> print> (sys.getsizeof(x))> |
tablica kodów c zawierająca ciągi znaków
>
>
Wyjście:
The size allotted using range() is : 80064 The size allotted using xrange() is : 40>
Operacje Użycie funkcji xrange() i range().
Funkcja range() zwraca listę ze wszystkimi operacjami, które Móc być zastosowane na liście, mogą być na niej użyte. Z drugiej strony, ponieważ xrange() zwraca obiekt xrange, operacje powiązane z listą Nie mogę można do nich zastosować, stąd jest to wada.
Python3
# initializing a with range()> a>=> range>(>1>,>6>)> # initializing a with xrange()> x>=> xrange>(>1>,>6>)> # testing usage of slice operation on range()> # prints without error> print> (>'The list after slicing using range is : '>)> print> (a[>2>:>5>])> # testing usage of slice operation on xrange()> # raises error> print> (>'The list after slicing using xrange is : '>)> print> (x[>2>:>5>])> |
>
>
Błąd:
Traceback (most recent call last): File '1f2d94c59aea6aed795b05a19e44474d.py', line 18, in print (x[2:5]) TypeError: sequence index must be integer, not 'slice'>
Wyjście:
The list after slicing using range is : [3, 4, 5] The list after slicing using xrange is :>
Różnica między range() i xrange() w Pythonie
Ponieważ xrange() ocenia tylko obiekt generatora zawierający tylko wartości wymagane przez leniwą ocenę, dlatego szybciej w implementacji niż range().
Ważne punkty:
tylko nick
- Jeśli chcesz napisać kod, który będzie działał zarówno w Pythonie 2, jak i Pythonie 3, użyj funkcji range(), ponieważ funkcja xrange jest przestarzała w Pythonie 3.
- range() jest szybsza, jeśli wielokrotnie iterujesz po tej samej sekwencji.
- Funkcja xrange() musi za każdym razem rekonstruować obiekt będący liczbą całkowitą, ale funkcja range() będzie zawierała rzeczywiste obiekty całkowite. (Jednak zawsze będzie działać gorzej pod względem pamięci)
| zakres() | xzakres() |
|---|---|
| Zwraca listę liczb całkowitych. | Zwraca obiekt generatora. |
| Szybkość wykonywania jest mniejsza | Szybkość wykonania jest większa. |
| Zajmuje więcej pamięci, ponieważ przechowuje w pamięci całą listę elementów. | Zajmuje mniej pamięci, ponieważ przechowuje w pamięci tylko jeden element na raz. |
| Podczas zwracania listy można wykonywać wszystkie operacje arytmetyczne. | Takich operacji nie można wykonać na xrange(). |
| W Pythonie 3 funkcja xrange() nie jest obsługiwana. | W Pythonie 2 funkcja xrange() służy do iteracji w pętlach for. |