Python range() Функция: Примери за цикъл Float, List, For
⚡ Умно обобщение
Python range() е вградена функция, която генерира непроменяема поредица от цели числа от начална стойност до, но не и крайна стойност, използвайки опционална стъпка за контрол на нарастването.

Какво е Python Обхват?
Python range() е вградена функция, достъпна с Python от Python (3.x) и дава поредица от числа въз основа на дадения начален и стоп индекс. В случай, че началният индекс не е даден, индексът се счита за 0 и ще увеличава стойността с 1 до индекса за спиране.
Например, range(5) ще изведе стойностите 0, 1, 2, 3, 4. Python range() е много полезна команда и се използва най-вече, когато трябва да итерирате, използвайки за цикъл.
Синтаксис
Синтаксисът на функцията range() е показан по-долу:
range(start, stop, step)
параметри
- започнете: (по избор) Началният индекс е цяло число и ако не е зададен, стойността по подразбиране е 0.
- Спри се: Индексът на спиране определя стойността, при която функцията за диапазон трябва да спре. Той е задължителен вход за функцията за диапазон. Последната стойност винаги ще бъде с 1 по-малка от стойността на спиране.
- стъпка: (по избор) Стойността на стъпката е числото, с което трябва да се увеличи следващото число в диапазона; по подразбиране е 1.
Върната стойност
Върнатата стойност е поредица от числа от дадения индекс за начало до край.
Python range() Функция и история
Python range() е въведен от Python версия 3; преди това, xrange() беше функцията.
Както range(), така и xrange() се използват за генериране на поредица от числа.
Следват разликите между range() и xrange():
| диапазон() | xrange() |
|---|---|
| Range() дава последователността от числа и връща списък от числа. | Функцията xrange() дава генераторен обект, който трябва да бъде включен във for-цикъл, за да получи стойностите. |
| Range() връща списък. | xrange() връща генераторен обект. |
| Методът range() използва повече памет, тъй като върнатият списък трябва да бъде съхранен в сравнение с xrange(). | Тъй като xrange() връща обект-генератор, той не дава стойности мигновено и трябва да се използва във for-loop, за да се получат стойностите. |
| Използването на памет е по-голямо, следователно изпълнението на кода е бавно при работа с огромен набор от данни. | Изпълнението на кода е по-бързо с помощта на xrange(). |
Използване на range()
Този пример показва как да отпечатате стойностите от 0-9 с помощта на range().
Стойността, използвана в диапазона, е 10, така че изходът е 0 1 2 3 4 5 6 7 8 9.
Тъй като началната стойност не е дадена, тя се счита за 0 и последната стойност се дава до 9. Последната стойност винаги е с 1 по-малка от дадената стойност, т.е. стоп-1.
for i in range(10): print(i, end =" ")
Изход:
0 1 2 3 4 5 6 7 8 9
Използване на старт и стоп в range()
В кода началната стойност е 3, а крайната стойност е 10. Тук началният индекс е 3, така че поредицата от числа ще започва от 3 до крайната стойност. Последната стойност в поредицата ще бъде с 1 по-малка от крайната стойност, 10-1 = 9.
for i in range(3, 10): print(i, end =" ")
Изход:
3 4 5 6 7 8 9
Използване на старт, стоп и стъпка
Началната стойност е 3, така че поредицата от числа ще започва от 3. Крайната стойност е 10, така че поредицата от числа ще спре на (10-1), т.е. 9. Стъпката е 2, така че всяка стойност в поредицата ще бъде увеличена с 2. Ако стойността на стъпката не е зададена, стойността по подразбиране за стъпка е 1.
for i in range(3, 10, 2): print(i, end =" ")
Изход:
3 5 7 9
Дотук видяхме как функцията range() дава увеличената стойност за дадената стоп стойност. Нека сега опитаме пример за получаване на намалената стойност в дадения диапазон.
Увеличаване на стойностите в диапазона с положителна стъпка
Параметърът step в range() може да се използва за увеличаване или намаляване на стойностите. По подразбиране е положителна стойност, 1. Така че винаги ще дава увеличени стойности.
Стойността на стъпката трябва да е положителна, в случай че искате увеличени стойности като изход.
for i in range(1, 30, 5): print(i, end =" ")
Изход:
1 6 11 16 21 26
Reverse Диапазон: Намаляване на стойностите с отрицателна стъпка
Параметърът step с отрицателна стойност в range() може да се използва за получаване на намалени стойности. В примера по-долу стойността на step е отрицателна, така че изходът ще бъде намален от дадената стойност на диапазона.
for i in range(15, 5, -1): print(i, end =" ")
Изход:
15 14 13 12 11 10 9 8 7 6
Началната стойност е 15, крайната стойност е 5, а стойността на стъпката е отрицателно число, т.е. -1. С горните входни данни, функцията range() ще намалява стойността от 15 нататък, докато достигне крайната стойност, но тук разликата е, че последната стойност ще бъде stop + 1.
Използване на плаващи числа в Python диапазон()
Нека сега да поработим върху range() с помощта на числа с плаваща запетая.
Пример:
for i in range(10.5): print(i, end =" ")
В горния пример използвахме стоп стойност 10.5.
Резултатът е:
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 дава грешка, тъй като функцията range() не поддържа числа с плаваща запетая за начало, край и стъпка.
Използване на for-цикъл с Python диапазон()
В този пример ще използваме масив от числа и ще видим как да итерираме масива във for-loop, използвайки range().
Пример:
arr_list = ['Mysql', 'Mongodb', 'PostgreSQL', 'Firebase'] for i in range(len(arr_list)): print(arr_list[i], end =" ")
Изход:
MysqlMongodb PostgreSQL Firebase
В горния пример използвахме len(arr_list) като стоп стойност. Цикълът for ще итерира до стоп стойността, т.е. дължината на масива, която ще бъде 4, тъй като имаме четири елемента в arr_list. Началната стойност ще бъде 0, а стъпката ще бъде 1, така че стойностите ще започват от 0 и ще спират на 3, т.е. дължина на масива -1, което означава 4 -1 = 3.
Използването на Python range() като списък
В този пример ще видите как да използвате изхода от диапазон като списък.
Пример:
print(list(range(10)))
Изход:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Можете да видите, че изходът е формат на списък. Не беше необходимо да правим цикъл на range() и използвайки метода list() можехме директно да конвертираме изхода от диапазон във формат на списък.
Използване на знаци в python range()
Досега сме използвали цели числа в python range(). Видяхме също, че числата с плаваща запетая не се поддържат в диапазона на Python. Нека опитаме да видим резултата какво се случва, когато използваме знаци.
Пример:
for c in range ('z'):
print(c, end =" ")
Изход:
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
Извежда грешка, казвайки, че низ не може да се интерпретира като цяло число.
За да получите списъка с азбуки, можете да персонализирате кода и да получите желаните резултати, както е показано по-долу:
Пример:
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)))
Изход:
['a', 'b', 'c', 'd', 'e', 'f', 'g']
Как да получите достъп до елементите на диапазона
Можете да използвате for-цикъл, за да получите стойностите от диапазона или да използвате индекса за достъп до елементите от диапазон().
Използване на for-цикъл
Пример:
for i in range(6):
print(i)
Изход:
0 1 2 3 4 5
Използване на индекс
Индексът се използва с диапазон, за да се получи наличната стойност в тази позиция. Ако стойността на диапазона е 5, за да получите началната стойност, можете да използвате range(5)[0] и следващата стойност range(5)[1] и т.н.
Пример:
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)
Изход:
The first element in range is = 0 The second element in range is = 1 The first element in range is = 4
Използване на list()
Този метод ще отпечата всички елементи от range(). Използвайки list(), той ще върне елементите от range() във формат на списък.
Пример:
print(list(range(10)))
Изход:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Той дава изходния списък за дадения диапазон.
Пример: Вземете четни числа с помощта на range()
Използването на range() ще получи списъка с четните числа в диапазона, даден като вход. Параметрите за range() са: start е 2, stop е 20 и step е 2, така че стойностите ще бъдат увеличени с 2 и ще дават четни числа до stop-2.
Пример:
for i in range(2, 20, 2): print(i, end =" ")
Изход:
2 4 6 8 10 12 14 16 18
Обединяване на два диапазона() изходи
В този пример ще обединим 2 функции range() с помощта на функцията chain() на модула itertools.
Пример:
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=" ")
Изход:
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
Използване на range() с NumPy
Модулът NumPy има функция arange(), която работи и дава подобен резултат като range(). Arange() приема същите параметри като range().
Синтаксис:
arange(start, stop, step)
За да работите с NumPy, следвайте стъпките, дадени по-долу.
Стъпка : Импортиране на модул NumPy
import numpy
В случай, че по време на изпълнение се появи грешка, че модулът numpy не е намерен, трябва да инсталирате модула, както е показано в стъпка 2.
Стъпка Инсталиране на NumPy
pip install numpy
Стъпка : Работещ пример за arange() с помощта на NumPy
import numpy as np for i in np.arange(10): print(i, end =" ")
Изход:
0 1 2 3 4 5 6 7 8 9
Числа с плаваща запетая с помощта на NumPy arange()
Не е възможно да се получи поредицата с плаваща запетая, използвайки range(), но е възможно, използвайки NumPy arange().
Пример:
Желаният диапазон е от 0.5 до 1.5. Стойността ще бъде увеличена с 0.2.
import numpy as np for i in np.arange(0.5, 1.5, 0.2): print(i, end =" ")
Изход:
0.5 0.7 0.8999999999999999 1.0999999999999999 1.2999999999999998
Резултатът, който получаваме, е малко странен; някои от числата с плаваща запетая са показани с 16 знака след десетичната запетая. Това се случва поради сложността на съхраняването на десетични числа с плаваща запетая в двоичен формат. Можете също така да закръглите стойностите, ако е необходимо, и да ги ограничите до необходимия брой знака след десетичната запетая.
