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().