Python range() Функция: Примери за цикъл Float, List, For
Какво е Python Обхват?
Python range() е вградена функция, достъпна с Python от Python(3.x) и дава поредица от числа въз основа на дадения начален и стоп индекс. В случай, че началният индекс не е даден, индексът се счита за 0 и ще увеличава стойността с 1 до индекса за спиране.
Например range(5) ще ви изведе стойности 0,1,2,3,4 Python range() е много полезна команда и се използва най-вече, когато трябва да повторите, като използвате for цикъл.
Синтаксис
range(start, stop, step)
параметри
- започнете: (по избор) Началният индекс е цяло число и ако не е зададен, стойността по подразбиране е 0.
- Спри се: Индексът на спиране определя стойността, при която функцията за диапазон трябва да спре. Това е задължителен вход за функцията за диапазон. Последната стойност винаги ще бъде с 1 по-малка от стойността на спиране.
- стъпка: (по избор). Стойността на стъпката е числото, с което трябва да се увеличи следващото число от диапазона, по подразбиране е 1.
Върната стойност
Върнатата стойност е поредица от числа от дадения индекс за начало до край.
Python range() Функция и история
Python range() е въведен от python версия 3, преди това xrange() беше функцията.
И двата диапазона и xrange() се използват за създаване на поредица от числа.
Следват разликите между диапазон и 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() дава увеличената стойност за зададената стоп стойност. Нека сега опитаме пример, за да получим намалената стойност в дадения диапазон.
Увеличаване на стойностите в диапазона с положителна стъпка.
Стъпката на параметъра в range() може да се използва за увеличаване/намаляване на стойностите. По подразбиране това е положителна стойност 1. Така че винаги ще дава увеличени стойности.
Стойността на стъпката трябва да е положителна, в случай че искате да искате увеличени стойности като изход.
for i in range(1, 30, 5): print(i, end =" ")
Изход:
1 6 11 16 21 26
Reverse Range: Намаляване на стойностите чрез отрицателна стъпка
Стъпката на параметъра с отрицателна стойност в range() може да се използва за получаване на намалени стойности. В примера по-долу стойността на стъпката е отрицателна, така че изходът ще бъде намален спрямо зададената стойност на диапазона.
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 нататък, докато достигне стоп стойността, но тук разликата е, че последната стойност ще бъде стоп + 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-цикъл с помощта на 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(). arrange() приема същите параметри като 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 знака след десетичната запетая. Това се случва поради сложността на съхраняването на десетични плаващи числа в двоичен формат. Можете също да закръглите стойностите, ако е необходимо, и да ги ограничите до нужните десетични знаци.
Oбобщение
- Python range() е вградена функция, достъпна с Python от Python(3.x) и дава поредица от числа въз основа на дадения начален и стоп индекс. В случай, че началният индекс не е даден, индексът се счита за 0 и ще увеличава стойността до индекса за спиране.
- Python range() е въведен от python версия 3, преди това xrange() беше функцията.
- Range() дава последователността от числа и връща списък от числа. Функцията xrange() дава генераторен обект, който трябва да бъде включен във for-цикъл, за да получи стойностите.
- Стъпката на параметъра в range() може да се използва за увеличаване/намаляване на стойностите. По подразбиране това е положителна стойност 1. Така че винаги ще дава увеличени стойности.
- Python дава грешка за числа с плаваща запетая, тъй като функцията range() поддържа само цели числа.
- Стойностите от range() могат да бъдат достъпни чрез for-loop, използвайки index и list()
- Модулът NumPy има функция arange(), която работи и дава подобен изход като range(). arange() приема същите параметри като range().
- Възможно е да получите последователността с плаваща запетая NumPy arange(), която не се поддържа с помощта на range().