Python 2: Główna różnica to to, że range() zwraca statyczną tablicę obiektów dla całego zakresu iteracji, natomiast xrange() zwraca iterator (obiekt rangeiterator) dla każdej iteracji osobno w momencie kiedy jest to potrzebne.
Kiedy używać którego?
Na pewno nie używamy range() dla iteracji idących w miliardy, bo trzeba zapisać w pamięci tablicę na miliardy obiektów, która może wyjść poza pamięć urządzenia.
Gdy chcemy użyć wielokrotnie tego samego zakresu iteracji, wtedy można użyć range:
zakres = range(100)
for i in zakres:
for j in zakres:
for k in zakres:
print(i, j, k)
Tablica statyczna jest w tym wypadku tworzona i zapisana do pamięci tylko raz.
Python 3: Nie ma xrange(), a range() zwraca iterator.
Korzystając z serwisu akceptujesz regulamin
oraz politykę prywatności.
Używamy informacji zapisanych za pomocą plików cookies w celu zapewnienia maksymalnej wygody w korzystaniu z naszego serwisu.
Jeśli nie wyrażasz zgody, ustawienia dotyczące plików cookies możesz zmienić w swojej przeglądarce.
Python 2:
Główna różnica to to, że range() zwraca statyczną tablicę obiektów dla całego zakresu iteracji, natomiast xrange() zwraca iterator (obiekt rangeiterator) dla każdej iteracji osobno w momencie kiedy jest to potrzebne.
Kiedy używać którego?
Na pewno nie używamy range() dla iteracji idących w miliardy, bo trzeba zapisać w pamięci tablicę na miliardy obiektów, która może wyjść poza pamięć urządzenia.
Gdy chcemy użyć wielokrotnie tego samego zakresu iteracji, wtedy można użyć range:
Tablica statyczna jest w tym wypadku tworzona i zapisana do pamięci tylko raz.
Python 3:
Nie ma xrange(), a range() zwraca iterator.