Какво е обхват на Python?
Обхватът на Python () е вградена функция, достъпна с Python от Python (3.x), и дава последователност от числа въз основа на дадения индекс за начало и спиране. В случай, че началният индекс не е даден, индексът се счита за 0 и ще увеличи стойността с 1 до индекса за спиране.
Например range (5) ще ви изведе стойности 0,1,2,3,4. Обхватът на Python () е много полезна команда и се използва най-вече, когато трябва да итерирате с помощта на цикъл for.
В този урок ще научите:
- Какво е обхват на Python?
- Синтаксис
- Обхват на Python () Функция и история
- Използване на диапазон ()
- Използване на старт и стоп в обхвата ()
- Използвайки старт, стоп и стъпка
- Увеличаване на стойностите в диапазон с помощта на положителна стъпка.
- Обратен диапазон: Намаляване на стойностите с помощта на отрицателна стъпка.
- Използване на плаващи числа в диапазон на Python ()
- Използване на for-loop с Python range ()
- Използване на Python range () като списък
- Използване на символи в диапазон на python ()
- Как да получите достъп до елементите на диапазона
- Пример: Вземете четни числа, като използвате диапазон ()
- Обединяване на изходи с два диапазона ()
- Използване на обхват () с NumPy
Синтаксис
range(start, stop, step)
Параметри
- start: (по избор) Началният индекс е цяло число и ако не е даден, стойността по подразбиране е 0.
- stop: Стоп индексът решава стойността, при която функцията за диапазон трябва да спре. Това е задължителен вход за функция за обхват. Последната стойност винаги ще бъде с 1 по-малка от стойността за спиране.
- стъпка: (по избор). Стойността на стъпката е числото, с което следващото число е диапазон, трябва да се увеличи, по подразбиране е 1.
Върната стойност:
Връщаната стойност е поредица от числа от дадения индекс за начало до спиране.
Обхват на Python () Функция и история
Обхватът на Python () е въведен от python версия 3, преди функцията xrange () да бъде.
И двата диапазона и xrange () се използват за генериране на поредица от числа.
Следват разликите между обхвата и xrange ():
обхват () | xrange () |
Диапазонът () дава поредицата от числа и връща списък с числа. | Функцията xrange () дава обект на генератор, който трябва да бъде циклиран в цикъл for, за да получи стойностите. |
Диапазонът () връща списък. | xrange () връща обект на генератор. |
Методът range () използва повече памет, тъй като върнатият списък трябва да се съхранява в сравнение с xrange (). | Тъй като xrange () връща обект на генератор, той не дава стойности незабавно и трябва да се използва вътре в for-loop, за да получи стойностите. |
Използването на памет е в по-голяма степен, следователно изпълнението на кода е бавно, когато се работи върху огромен набор от данни. | Изпълнението на кода е по-бързо с помощта на xrange (). |
Използване на диапазон ()
Този пример показва как да отпечатате стойностите от 0-9 с помощта на range ().
Стойността, използвана в диапазона, е 10, така че изходът е 0 1 2 3 4 5 6 7 8 9
Тъй като стартът не е даден, стартът се счита за 0, а последната стойност се дава до 9. Последната стойност винаги е с 1 по-малка от дадената стойност, т.е. stop-1.
for i in range(10):print(i, end =" ")
Изход:
0 1 2 3 4 5 6 7 8 9
Използване на старт и стоп в обхвата ()
В кода началната стойност е 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), т.е. се увеличава с 2. Ако стойността на стъпката не е дадена, стойността за стъпка по подразбиране е 1.
for i in range(3, 10, 2):print(i, end =" ")
Изход:
3 5 7 9
Досега видяхме как функцията range () дава увеличената стойност за дадената стоп стойност. Нека сега опитаме пример, за да получим декрементираната стойност в дадения диапазон.
Увеличаване на стойностите в диапазон с помощта на положителна стъпка.
Стъпката на параметъра в диапазона () може да се използва за увеличаване / намаляване на стойностите. По подразбиране това е положителна стойност 1. Така че винаги ще дава увеличени стойности.
Стойността на стъпката трябва да бъде положителна, в случай че искате да увеличите стойностите като изход.
for i in range(1, 30, 5):print(i, end =" ")
Изход:
1 6 11 16 21 26
Обратен диапазон: Намаляване на стойностите с помощта на отрицателна стъпка.
Стъпката на параметъра с отрицателна стойност в диапазона () може да се използва за получаване на намалени стойности. В примера по-долу стойността на стъпката е отрицателна, така че изходът ще бъде намален от дадената стойност на диапазона.
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 ()
Нека сега работим върху диапазона (), като използваме числа с плаваща запетая.
Пример:
for i in range(10.5):print(i, end =" ")
В горния пример използвахме стоп стойност като 10.5.
Резултатът е:
Traceback (most recent call last):File "python_range.py", line 1, infor i in range(10.5):TypeError: 'float' object cannot be interpreted as an integer
Python дава грешка, тъй като функцията range () не поддържа числа с плаваща запетая за начало, спиране и стъпка.
Използване на for-loop с Python range ()
В този пример ще използваме масив от числа и нека видим как да използваме итерацията на масива вътре в 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]
Можете да видите, че изходът е формат на списък. Не беше необходимо да циклираме диапазона () и използвайки метода list (), можем директно да преобразуваме изхода от диапазон в формат на списъка.
Използване на символи в диапазон на python ()
Досега използвахме цели числа в python range (). Също така видяхме, че числата с плаваща запетая не се поддържат в обхвата на python. Нека се опитаме да видим резултата какво се случва, когато използваме символи.
Пример:
for c in range ('z'):print(c, end =" ")
Изход:
Traceback (most recent call last):File "python_range.py", line 1, infor 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-loop, за да получите стойностите от диапазона или да използвате индекса за достъп до елементите от range ().
Използване на for-loop
Пример:
for i in range(6):print(i)
Изход:
012345
Използване на индекс
Индексът се използва с обхват, за да се получи стойността, налична на тази позиция. Ако стойността на диапазона е 5, за да получите началната стойност, можете да използвате диапазон (5) [0] и следващия диапазон от стойности (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)
Изход:
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)
Използване на списък ()
Този метод ще отпечата всички елементи от диапазона (). Използвайки list (), той ще върне елементите от range () във формат на списък.
Пример:
print(list(range(10)))
Изход:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Той дава изходен списък за дадения диапазон.
Пример: Вземете четни числа, като използвате диапазон ()
Използването на 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 () с помощта на функцията на веригата модули itertools ().
Пример:
from itertools import chainprint("Merging two range into one")frange =chain(range(10), range(10, 20, 1))for i in frange:print(i, end=" ")
Изход:
Merging two range into one0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Използване на обхват () с NumPy
Модулът NumPy има функция arange (), която работи и дава подобен изход като range (). Подреждането () приема същите параметри като диапазона ().
Синтаксис:
arange(start, stop, step)
За да работите с NumPy, следвайте стъпките, дадени по-долу.
Стъпка 1 : Импортиране на модул NumPy
import numpy
В случай на изпълнение, това дава грешка, като казва, че модулът numpy не е намерен, трябва да инсталирате модула, както е показано в стъпка 2.
Стъпка 2 : Инсталирайте NumPy
pip install numpy
Стъпка 3 : Работен пример за arange () с помощта на NumPy
import numpy as npfor 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 npfor i in np.arange(0.5, 1.5, 0.2):print(i, end =" ")
Изход:
0.5 0.7 0.8999999999999999 1.0999999999999999 1.2999999999999998
Резултатът, който получаваме, е малко странен, някои от числата с плувка са показани с 16 знака след десетичната запетая. Това се случва поради сложността на съхраняването на десетични плаващи числа в двоичен формат. Можете също така да закръглите стойностите, ако е необходимо и да ги ограничите до десетичните знаци, от които се нуждаете.
Резюме:
- Обхватът на Python () е вградена функция, достъпна с Python от Python (3.x), и дава последователност от числа въз основа на дадения индекс за начало и спиране. В случай, че началният индекс не е даден, индексът се счита за 0 и ще увеличи стойността до индекса за спиране.
- Обхватът на Python () е въведен от python версия 3, преди функцията xrange () да бъде.
- Диапазонът () дава поредицата от числа и връща списък с числа. Функцията xrange () дава обект на генератор, който трябва да бъде циклиран в цикъл for, за да получи стойностите.
- Стъпката на параметъра в диапазона () може да се използва за увеличаване / намаляване на стойностите. По подразбиране това е положителна стойност 1. Така че винаги ще дава увеличени стойности.
- Python дава грешка за числа с плаваща запетая, тъй като функцията range () поддържа само цели числа.
- Стойностите от range () могат да бъдат достъпни с помощта на for-loop, използвайки index и list ()
- Модулът NumPy има функция arange (), която работи и дава подобен изход като range (). Arange () приема същите параметри като range ().
- Възможно е да се получи последователност с плаваща запетая NumPy arange (), която не се поддържа с помощта на range ().