Содержание

Функция range в Python — основы и примеры с циклом for, обратная итерация

Что делает функция range в Python?

Если вы опытный разработчик, или даже новичок, вы, несомненно, слышали о функции Python range(). Но что же она делает? В двух словах, она генерирует список чисел, который обычно используется для работы с циклом for. Существует много вариантов использования. Зачастую, ее используют, когда нужно выполнить действие X раз, где вы можете использовать индекс. В других случаях вам, возможно, понадобится сделать итерацию по списку (или по другому итерируемому объекту), имея доступ к индексу.

Функция range() имеет небольшие отличия в работе на версии Python 2.x и 3.x , тем не менее у них остается одинаковая концепция. К этому вопросу мы доберемся немного позже.

Параметры range: star, stop, шаг

Функция range() принимает три параметра, например:

range(stop)
  1. stop: количество целых чисел для генерации, начиная с нуля. Например, range(3) == [0, 1, 2].
range([start], stop[, step])
  1. start: число начала последовательности.
  2. stop: генерирует число до данного числа, но не включая его.
  3. step: разница между каждым числом из последовательности.

Обратите внимание:

  • Все параметры должны быть целыми числами.
  • Каждый из параметров может быть положительным или отрицательным.
  • range() (и Python в целом) основана на индексе 0, означая, что список индексов начинается с 0, а не 1, например. Синтаксис, предоставляющий доступ к первому элементу в списке — mylist[0]. Поэтому, последнее целое число, сгенерированное функцией range() зависит от stop, но не будет включать его. Например, range(0, 5) генерирует целые числа 0, 1, 2, 3, 4, но не включая 5.

Примеры функции range()

Простое применение с циклом for:

Копировать Скопировано Use a different Browser

>>> # 5 чисел начиная с 0
>>> for i in range(5):
	    print(i)
	
0
1
2
3
4
>>> # числа с 3 до 6 (не включая его)
>>> for i in range(3, 6):
	    print(i)
3
4
5
>>> # числа с 4 до 10 (не включая его) с шагом 2
>>> for i in range(4, 10, 2):
	    print(i)
4
6
8
>>> # числа с 0 до -10 (не включая его) с шагом -2
>>> for i in range(0, -10, -2):
	    print(i)
0
-2
-4
-6
-8

А это пример итерации по списку.

Копировать Скопировано Use a different Browser

>>> my_list = ['один', 'два', 'три', 'четыре', 'пять']
>>> my_list_len = len(my_list)
>>> for i in range(0, my_list_len):
	    print(my_list[i])
один
два
три
четыре
пять

В качестве параметра stop мы передали длину списка (5).

Range полезна в итерации с условиями. Рассмотрим примере песни “99 Bottles of Beer on the Wall…” со следующим кодом:

Копировать Скопировано Use a different Browser

for i in range(99, 0, -1):
	if i == 1:
		print('1 bottle of beer on the wall, 1 bottle of beer!')
		print('So take it down, pass it around, no more bottles of beer on the wall!')
	elif i == 2:
		print('2 more bottles of beer on the wall, 2 more bottles of beer!')
		print('So take one down, pass it around, 1 more bottle of beer on the wall!')
	else:
		print('{0} bottles of beer on the wall, {0} bottles of beer!'.format(i))
		print('So take it down, pass it around, {0} more bottles of beer on the wall!'.
format(i - 1))

Мы получаем следующий результат:

99 bottles of beer on the wall, 99 bottles of beer!
So take one down, pass it around, 98 more bottles of beer on the wall!
98 bottles of beer on the wall, 98 bottles of beer!
So take one down, pass it around, 97 more bottles of beer on the wall!
97 bottles of beer on the wall, 97 bottles of beer!
So take one down, pass it around, 96 more bottles of beer on the wall!
...
3 bottles of beer on the wall, 3 bottles of beer!
So take one down, pass it around, 2 more bottles of beer on the wall!
2 more bottles of beer on the wall, 2 more bottles of beer!
So take one down, pass it around, 1 more bottle of beer on the wall!
1 bottle of beer on the wall, 1 bottle of beer!
So take it down, pass it around, no more bottles of beer on the wall!

Прекрасно! Наконец-то вы видите настоящую силу Python. Если вы еще немного в замешательстве, рекомендую прочитать статью 99 бутылок пива (Википедия).

range против функций xrange в python

Вы должно быть слышали о функции, известной как xrange(). Эта функция представлена в Python 2.x, и была переименована в

range() в Python 3.x. Так в чем же разница? В Python 2.x range() создавала список, а xrange() возвращала итератор — объект последовательности. Мы можем увидеть это в следующем примере:

# Python 3.x
>>> range(1)
range(0, 1)
>>> type(range(1))
range'>
# Python 2.x
>>> range(1)
[0]
>>> type(range(1))
list'>

В Python 3.x. у функции range() есть свой собственный тип. Говоря языком простых терминов, если вы хотите воспользоваться range() в цикле for, вы сделаете это с легкостью. Однако вы не можете использовать его как объект списка. Например, вы не можете разбить на срезы тип

range.

Когда вы используете итератор, каждый цикл оператора for выдает мгновенно последующий номер на лету. В то время как исходная функция range() производит все числа мгновенно, прежде чем цикл for начнет выполняться.

Проблема с исходной функцией range() (в Python 2.x) заключалась в том, что она требовала очень большой объем памяти при создании большого количества чисел. Однако в нем, как правило, можно работать быстрее с небольшим количеством чисел.

Обратите внимание, что в Python 3.x вы все равно можете создать список, передав генератор, возвращенный функции

list(). Следующим образом:

Копировать Скопировано Use a different Browser

>>> list_of_ints = list(range(3))
>>> list_of_ints
[0, 1, 2]

Чтобы увидеть разницу в скорости действия в функции range() и xrange(), посмотрите эту статью (english).

Использование float с функцией range()

К сожалению, функция range() не поддерживает тип float. Тем не менее, не спешите расстраиваться! Мы можем легко использовать его с помощью данной функции. Есть несколько способов сделать это, вот один из них.

Копировать Скопировано Use a different Browser

>>> # все аргументы обязательны
>>> def frange(start, stop, step):
	    i = start
	    while i >> for i in frange(0.
5, 1.0, 0.1): print(i) 0.5 0.6 0.7 0.8 0.9 1.0

Тест на знание функции Range

Какое из следующих утверждений НЕ верно?

По умолчанию, функция range начинается с 0

Параметры функции range могут быть отрицательными целыми числами

В цикле «for i in range(4)» переменная «i» будет 0, 1, 2, 3, 4

Невозможно получить последовательность 6, 12, 18, 24 с помощью range

Невозможно получить последовательность 24, 18, 12, 6 с помощью range

Какой код вернет список [1, 6, 11, 16, 21, 26]?

list(range(1, 30, 5))

list(range(27, 5))

list(range(1,26,5))

list(range(26))

Выберите код, который вернет наибольшее значение? (функция sum считает сумму значений списка))

sum(list(range(10, 1000, -1)))

sum(list(range(9, 99, 99)))

sum(list(range(5)))

sum(list(range(0, 10, 5)))

Сколько итераций будет в этом цикле

for i in range(-1, -10)

?

Какой код вернет True?

list(range(-2,-50,-20)) == [-2, -22, -42]

list(range(-1,5)) == [0, 1, 2, 3, 4]

list(range(-10)) == [-9, -8, -7, -6, -5, -4, -3, -2, -1]

list(range(2,10, 2)) == [2, 4, 6, 8, 10]

list(range(1,11)) == [1, 2, 3, 4, 5, 7, 8, 9, 10]

{{title}}

{{image}}

{{content}}

{{/global}}

Поделиться результатами через

Facebook Twitter VK

Python: функция range()

Функция range является одной из встроенных функций, доступных в Python. Он генерирует серию целых чисел, от значения start до stop, указанного пользователем. Мы можем использовать его для цикла for и обходить весь диапазон как список.

Функция range() принимает один обязательный и два необязательных параметра. Это работает по-разному с различными комбинациями аргументов. В этом руководстве мы познакомим вас со всеми возможностями данной функции Python, чтобы вы могли легко использовать ее в своих задачах.

Существует два варианта функции range() в Python 3. Давайте проверим их синтаксис по одному.

Range(Stop)

Это самая основная форма range(). Требуется один аргумент для указания исключительного (Stop) верхнего предела.

«0» становится отправной точкой для генерации чисел. Смотрите пример ниже.

>>> robj = range(5)
>>> for it in robj:
...    print(it, end = ",")
...
0,1,2,3,4,

Посмотрите другой пример. Диапазон со стоп-значением «0» генерирует пустой диапазон, то есть нулевые элементы.

>>> r = range( 0 )
>>> print( r )
range(0, 0)
>>> len( r )
0

Если вы предоставляете нецелочисленное значение остановки, тогда оно вызывает ошибку TypeError.

>>> range(1.1)
TypeError: 'float' object cannot be interpreted as an integer
Range(Start, Stop[, Step])

Это немного сложная форма функции range. Здесь вы можете создать серию чисел с общей разницей по вашему выбору.

Вы можете передать следующие три аргумента:

  • ‘start’ -> Начальная точка для генерации чисел в range()
  • ‘stop’ -> Это точка перед завершением range().
  • ‘step’ -> Общая разница или счетчик приращений между двумя значениями

Обратите внимание на следующие моменты при использовании range() с вышеуказанной подписью.

  • Значение по умолчанию «step» равно 1. Оно вступает в действие, когда аргумент step отсутствует.
  • Нулевое значение для «шага» приводит к ошибке ValueError.
  • Нецелое значение вызывает TypeError.
  • Ненулевое целочисленное значение шага (> = стоп) по крайней мере вернет диапазон с одним элементом.

Обратите внимание, что функция range принимает только целочисленные аргументы. Чтобы создать диапазон с плавающей точкой, следуйте данному руководству: Генерация плавающего диапазона в Python

Функция Python Range() с примерами

Посмотрите примеры кода ниже, чтобы понять эту функцию немного глубже:

Использование параметров Start, Stop и Step
>>> # Range with two arguments
... for it in range(1, 7):
...    print(it, end = ", ")
...
1, 2, 3, 4, 5, 6,
>>>
>>> # Range with three arguments
... for it in range(1, 7, 3):
...    print(it, end = ", ")
...
1, 4,
>>>
Использование отрицательных значений start, stop и step

Мы можем передавать отрицательные значения для всех параметров диапазона, таких как аргументы start, stop и step.

В приведенном ниже примере мы предоставляем отрицательное значения для stop и step, чтобы выполнить цикл в обратном направлении.

>>> # Range with -ve values
... for it in range(10, -1, -2):
...    print(it, end = ", ")
...
10, 8, 6, 4, 2, 0
Генерация диапазона как арифметический ряд

Давайте создадим арифметический ряд (i = 10, n = 100, d = 10), используя метод range().

>>> list(range( 10, 100, 10 ))
[10, 20, 30, 40, 50, 60, 70, 80, 90]

Объект range() работает как генератор. Следовательно, мы преобразовали его в список, чтобы мы могли распечатать значения.

Перебор списка с использованием range()

Мы можем использовать функцию Python range() для обхода списка. Смотрите пример ниже.

>>> books = ['python', 'data science', 'machine learning', 'AI', 'deep learning']
>>> size = len(books)
>>> for it in range(0, size):
...    print(books[it])
. ..
python
data science
machine learning
AI
deep learning

Преобразовать диапазон в список

Python 3 range() создает объект типа генератора. По ходу цикла он выбирает значения одно за другим, а не получает их все сразу.

В действительности выходные данные функции range() представляют собой неизменяемую последовательность целых чисел. Следовательно, мы можем преобразовать то же самое в список Python. Мы будем использовать конструктор списка для преобразования вывода диапазона в список.

Смотрите пример ниже.

>>> r = range( 10, 100, 10 )
>>> type( r )

>>> r = list( r )
>>> type( r )

>>> print(r)
[10, 20, 30, 40, 50, 60, 70, 80, 90]

Верхний предел range включительно

По умолчанию Python range() по умолчанию исключает последнее число. Следовательно, он всегда игнорирует верхний предел своего вывода.

Однако мы можем внести следующие изменения в наш код, чтобы разрешить это.

  • Увеличьте значение stop с помощью счетчика шагов
  • Передайте новое значение stop в функцию range()

После внесения вышеуказанных изменений, давайте посмотрим, что происходит:

>>> start = 0
>>> stop = 7
>>> step = 1
>>>
>>> stop = stop + step
>>>
>>> for it in range(start, stop, step):
...    print(it, end = ", ")
...
0, 1, 2, 3, 4, 5, 6, 7

Range Python против Xrange

Мы изложили несколько отличий и некоторые ключевые факты о функциях range и xrange.

В Python 2.x было две функции диапазона: range() и xrange()

  • Разница между ними заключается в том, что range() возвращает список, тогда как последний возвращает итератор.

В Python 3.x у нас есть только одна функция range(). Это реализация xrange() из версии 2.x.

  • Новая функция range() не возвращает ни список, ни итератор. Он получает новый тип, известный как объект диапазона.
  • Мы можем перебирать объект диапазона как список. Но это немного отличается, так как мы не можем нарезать его.
  • В отличие от итераторов, которые выдают одно значение за раз, функция range() получает все числа одновременно. Следовательно, он имеет высокие требования к памяти.
  • Тем не менее, диапазон работает быстрее с небольшим набором чисел.
# python 2.x
>>> type(range(1))
type 'list'
>>> type(xrange(10))
class 'xrange'

# python 3.x
>>> type(range(10))
class 'range'

Узнайте в чем разница между range и xrange

Использование индекса с результатом работы range Python

Да, range() возвращает уникальный объект, который обладает свойствами, подобными списку и генератору.

Поскольку он действует как последовательность, мы можем получить доступ к его элементам, используя индексы. Он допускает как положительные так и отрицательные значения индекса.

# Indexing Python range object
>>> print(range(0, 7)[1])
1
>>> print(range(0, 7)[6])
6

Объединить вывод двух функций range()

В Python нет встроенной функции для объединения результатов двух результатов range(). Тем не менее, мы все еще можем сделать это.

Существует модуль с именем ‘itertools’, который имеет функцию chain() для объединения двух объектов диапазона.

Смотрите пример ниже.

>>> from itertools import chain
>>> merged = chain(range(5), range(10, 15))
>>> for it in merged:
...    print(it, end = ", ")
...
0, 1, 2, 3, 4, 10, 11, 12, 13, 14

В заключение

Вот несколько важных фактов о функции Python range():

  • В качестве аргументов допускаются только целочисленные значения.
  • Мы не можем предоставить параметр типа string или float внутри функции range().
  • Аргументы могут быть либо как положительные так и отрицательные.
  • Он не принимает «0» в качестве значения step. Если шаг равен «0», функция генерирует ошибку ValueError.

Функция Python range() — GeeksforGeeks

Функция Python range() возвращает последовательность чисел в заданном диапазоне. Чаще всего его используют для повторения последовательности чисел с использованием циклов Python.

Синтаксис диапазона Python () Функция

Синтаксис: Диапазон (старт, остановка, шаг)

Параметр:

  • Start : [Опционально] Начальная стоимость последовательности
  • Забега следующее значение после конечного значения последовательности
  • шаг: [ необязательный ] целочисленное значение, обозначающее разницу между любыми двумя числами в последовательности.

Возврат: Возвращает объект типа диапазона.

Example of Python range() function

Python3

for i in range ( 5 ):

     print (i, end = " " )

print ()

Output:

 0 1 2 3 4  

В чем польза функции диапазона в Python

Проще говоря, range() позволяет пользователю генерировать серию чисел в заданном диапазоне. В зависимости от того, сколько аргументов пользователь передает функции, пользователь может решить, где будет начинаться и заканчиваться этот ряд чисел, а также насколько велика будет разница между одним числом и следующим. Функция Python range() может быть инициализирована тремя способами.

  • диапазон (стоп) принимает один аргумент.
  • диапазон (старт, стоп) принимает два аргумента.
  • диапазон (старт, стоп, шаг) принимает три аргумента.

Диапазон Python (стоп)

Когда пользователь вызывает range() с одним аргументом, пользователь получит серию чисел, которая начинается с 0 и включает все целые числа до, но не включая число, которое пользователь предоставил в качестве остановки.

Визуализация диапазона Python

Пример: Демонстрация диапазона Python (стоп)

Python3

for i in range ( 6 ):

     print (i, end = " " )

Печать ()

Выход:

 0 1 2 3 4 5 

Диапазон Python (Start Storp)

, когда пользователь

. 0003 range() с двумя аргументами пользователь может решить не только, где заканчивается последовательность чисел, но и где она начинается, поэтому пользователю не нужно все время начинать с 0. Пользователи могут использовать range() для генерации последовательности чисел от X до Y, используя range(X, Y).

Визуализация диапазона Python

Пример: Демонстрация диапазона Python (запуск, остановка)

Python3

для i i диапазон ( 5 , 20 ):

     print (i, end = " " )

Output:

 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 

Диапазон Python (начало, стоп, шаг)

числа будут начинаться и останавливаться, но также и насколько велика будет разница между одним числом и следующим. Если пользователь не указывает шаг, то range() будет автоматически вести себя так, как будто шаг равен 1. В этом примере мы печатаем четные числа от 0 до 10, поэтому мы выбираем начальную точку от 0 (начало = 0 ) и остановите серию на 10 (стоп = 10). Для печати четного числа разница между одним числом и следующим должна быть 2 (шаг = 2), после указания шага мы получаем следующий вывод (0, 2, 4, 8).

Python range visualization

Example:  Demonstration of Python range (start, stop, step)

Python3

for i in range ( 0 , 10 , 2 ):

     print (i, end = " " )

print ()

Выход:

 0 2 4 6 8 

Диапазон Python () с примерами

Пример 1: увеличение . пользователь хочет увеличить, тогда пользователю нужно, чтобы шаги были положительным числом.

Python3

8 0 0047 , 30 , 4 ):

     print (i, end = " " )

print ()

для i в диапазоне (

Вывод:

 0 4 8 12 16 20 24 28 

Пример 2. Python range() использует отрицательный шаг число.

Python3

for i in range ( 25 , 2 , - 2 ):

     print (i, end = " " )

print ()

Output :  

 25 23 21 1917 15 13 11 9 7 5 3 

Пример 3: Python range() с float

Функция Python range() не поддерживает числа с плавающей запятой. то есть пользователь не может использовать числа с плавающей запятой или нецелые числа в любом из своих аргументов. Пользователи могут использовать только целые числа.

Python3

for i in range ( 3.3 ):

     print (i)

Вывод:  

 для i в диапазоне (3.3):
TypeError: объект 'float' не может быть интерпретирован как целое число 

Пример 4. Конкатенация двух функций range() с использованием метода itertools chain()

Результат двух функций range() можно объединить с помощью метода chain() модуля itertools. Метод chain() используется для печати всех значений в итерируемых целях одно за другим, упомянутых в его аргументах.

Python3

from itertools import chain

 

print ( "Concatenating the result" )

res = chain ( Диапазон ( 5 ), Диапазон ( 10 , 20 , 2 20 , 2 , 2 , 2 , 2 , 2 , 20047))

для I в RES:

. Вывод:  

 Объединение результата
0 1 2 3 4 10 12 14 16 18 

Пример 5. Доступ к range() со значением индекса

Последовательность чисел возвращается функцией range() в качестве объекта, к которому можно получить доступ по значению индекса. Его объект поддерживает как положительное, так и отрицательное индексирование.

Python3

ELE = ( 10 ) [ 0 ] ) [ 0 ] ) [ 0 ] ) [ 0 ] ). , ele)

 

ele = range ( 10 )[ - 1 ]

print ( "\nLast element:" , ele)

 

ele = range ( 10 )[ 4 ]

print ( "\nПятый элемент:" , ele)

Вывод:  

 Первый элемент: 0
Последний элемент: 9
Пятый элемент: 4 

Некоторые важные моменты, которые следует помнить о функции Python range():  
  • Функция range() работает только с целыми числами, т. е. целыми числами.
  • Все аргументы должны быть целыми числами. Пользователи не могут передавать строку или число с плавающей запятой или любой другой тип в аргументе start , stop и step диапазона().
  • Все три аргумента могут быть положительными или отрицательными.
  • Значение шага не должно быть равно нулю. Если шаг равен нулю, python вызывает исключение ValueError.
  • range() — это тип в Python 9.0021
  • Пользователи могут получать доступ к элементам в range() по индексу, так же как пользователи делают это со списком:

Python range() Функция с примерами

Python range() функция генерирует неизменяемую последовательность чисел , начиная с заданного начального целого числа до конечного целого числа. range() — это встроенная функция, которая возвращает объект диапазона, состоящий из серии целых чисел, которые мы можем выполнить с помощью цикла for .

В Python, используя цикл for с range() , мы можем повторить действие определенное количество раз. Например, давайте посмотрим, как использовать функцию range() из Python 3 для получения первых шести чисел.

Пример

 # Генерация чисел от 0 до 6
для я в диапазоне (6):
    print(i) 

Вывод

 0
1
2
3
4
5 
Функция Python range()

Примечание : Как видно из вывода, мы получили шесть целых чисел, начиная с 0 до 5. Если вы заметили, range() не включает 6 в свой результат, потому что он генерирует числа до конечного числа, но никогда не включает конечное число в свой результат .

range() работает по-разному в Python 3 и Python 2.

См. range() в Python 2

  • последовательность чисел.
  • В Python 3 xrange() переименован в range() и исходная функция range() удалены. Мы обсудим это в следующем разделе статьи.

СОДЕРЖАНИЕ

  • Как использовать функцию диапазона () в Python
    • Синтаксис
    • Параметры
    • Обратно )
    • диапазон(старт, стоп)
    • диапазон(старт, стоп, шаг)
    • Что нужно помнить о функции range()
  • Цикл for с range()
    • Перебор списка с использованием range() и цикла for
    • Практическая задача
  • Обратный диапазон
    • Использование отрицательного шага
    • Использование функции reversed21 90 перевернуть список
  • Шаг диапазона Python
    • Уменьшение диапазона() с использованием шага
  • Отрицательный диапазон() в Python
  • Преобразование диапазона() в список
  • Включающий диапазон
  • range() и xrange() в Python 2
  • Объединение результатов двух range()
  • range() индексация и нарезка
  • range() по символу или алфавиту
  • Резюме
  • Часто задаваемые вопросы использовать функцию range() в Python

    Синтаксис

    Ниже приведен синтаксис функции range().

     диапазон(начало, стоп[ шаг]) 

    Требуется три аргумента. Из трех два являются необязательными. начало и шаг являются необязательными аргументами, а stop является обязательным аргументом.

    Параметры

    • начало : (Нижний предел) Это начальная позиция последовательности. Значение по умолчанию равно 0 , если оно не указано. Например, диапазон(0, 10) . Здесь start=0 и stop = 10
    • stop : (Верхний предел) генерирует числа до этого числа, т. е. целое число, указывающее, в какой позиции остановиться (верхний предел). range() никогда не включает номер остановки в результат
    • шаг : Укажите значение приращения. Каждое следующее число в последовательности генерируется путем добавления значения шага к предыдущему числу. Значение по умолчанию равно 1 , если оно не указано. Это не что иное, как разница между каждым числом в результате. Например, диапазон (0, 6, 1) . Здесь шагов = 1 .

    Возвращаемое значение

    Возвращает объект класса диапазон .

     печать(тип(диапазон(10)))
    # Вывод  

    Шаги по использованию функции range()

    Функция range() генерирует последовательность целых чисел в соответствии с переданным аргументом. Следующие шаги показывают, как использовать функцию range() в Python.

    1. Передать начальное и конечное значения в range()

      Например, range(0, 6) . Здесь start=0 и stop = 6 . Он будет генерировать целые числа, начиная с старт число до стоп -1 . т. е. [0, 1, 2, 3, 4, 5]

    2. Передать значение шага в range()

      Шаг Укажите приращение. Например, диапазон (0, 6, 2) . Здесь шагов = 2 . Результат: [0, 2, 4]

    3. Используйте цикл for для доступа к каждому числу

      Используйте цикл for для повторения и доступа к последовательности чисел, возвращаемой range() .

    Шаги по использованию range()

    range() Примеры

    Теперь давайте рассмотрим все возможные сценарии. Ниже приведены три варианта range() .

    range(stop)

    Когда вы передаете только один аргумент в range() , он сгенерирует последовательность целых чисел, начиная с 0 до stop -1 .

     # Напечатать первые 10 чисел
    # стоп = 10
    для я в диапазоне (10):
        напечатать (я, конец = '')
    # Выход 0 1 2 3 4 5 6 7 8 9 

    Примечание :

    • Здесь start = 0 и step = 1 в качестве значения по умолчанию.
    • Если вы установите стоп как 0 или какое-либо отрицательное значение, то диапазон вернет пустую последовательность.
    • Если вы хотите начать диапазон с 1, используйте range(1, 10) .

    range(start, stop)

    Когда вы передаете два аргумента в range() , он будет генерировать целые числа, начиная с числа start до стоп -1 .

     # Числа от 10 до 15
    # начало = 10
    # стоп = 16
    для я в диапазоне (10, 16):
        напечатать (я, конец = '')
    # Вывод 10 11 12 13 14 15 

    Примечание

    • Здесь шаг = 1 как значение по умолчанию.
    • Диапазон вернет пустую последовательность, если вы установите значение stop меньше, чем start .

    range(start, stop, step)

    Когда вы передаете все три аргумента в range(), она возвращает последовательность чисел, начиная с начального номера, увеличиваясь на номер шага и останавливаясь перед номер остановки.

    Здесь вы можете указать другое приращение, добавив параметр step .

     # Числа от 10 до 15
    # начало = 10
    # стоп = 50
    # шаг = 5
    для i в диапазоне (10, 50, 5):
        напечатать (я, конец = '')
    # Вывод 10 15 20 25 30 35 40 45 

    Примечание :

    • Здесь шаг = 0 как значение по умолчанию.
    • Python вызовет исключение ValueError , если вы установите для шага значение 0.

    Что следует помнить о функции range()

    • Функция range() работает только с целыми числами, поэтому все аргументы должны быть целыми числами. Вы не можете использовать числа с плавающей запятой или любой другой тип данных в качестве начального, конечного и шагового значения. См. генерацию диапазона чисел с плавающей запятой в Python
    • . Все три аргумента могут быть положительными или отрицательными.
    • Значение шага не должно быть нулевым. Если step=0 , Python вызовет исключение ValueError .

    Практическая задача : –

    Используйте range()  для создания последовательности чисел от 9 до 100, кратных 3.

    Показать решение
     # start = 9
    # стоп = 100
    # шаг = 3 (приращение)
    для я в диапазоне (9, 100, 3):
        печать (я)
     

    См. : Упражнение Python for loop и range()

    for loop with range()

    Python for loop многократно выполняет блок кода или инструкцию фиксированное количество раз. Мы можем перебирать последовательность чисел, созданную функцией range(), используя цикл for.

    Давайте посмотрим, как использовать цикл for с функцией range() для вывода нечетных чисел от 1 до 10. Используя этот пример, мы можем понять, как переменная итератора i получает значение, когда мы используем range( ) с циклом for.

     для i в диапазоне (1, 10, 2):
        print("Текущее значение i равно:", i) 

    Вывод

     Текущее значение i равно: 3
    Текущее значение i: 5
    Текущее значение i: 7
    Текущее значение i: 9 

    Чтобы понять, что для i в range() означает, что в Python нам нужно сначала понять работу функции range() .

    Функция range() использует генератор для получения чисел. Он не генерирует все числа сразу.

    Как вы знаете, range() возвращает объект range . Объект диапазона использует один и тот же (небольшой) объем памяти, независимо от размера диапазона, который он представляет. Он сохраняет только начальные, конечные и ступенчатые значения и вычисляет отдельные элементы и поддиапазоны по мере необходимости.

    Т. е. он генерирует следующее значение только тогда, когда его запрашивают для итерации цикла. В каждой итерации цикла он генерирует следующее значение и присваивает его переменной итератора i.

    • Как видно из вывода, переменная i не получает значения 1, 3, 5, 7 и 9 одновременно.
    • В первой итерации цикла значение i является начальным номером диапазона.
    • Далее, в каждой последующей итерации цикла for значение i увеличивается на значение шага. Значение i определяется по формуле i = i + шаг .

    Значит, range() выдает числа одно за другим по мере перехода цикла к следующей итерации. Это экономит много памяти, что делает range() быстрее и эффективнее.

    Работа функции диапазона Python с циклом for

    Перебор списка с использованием

    range() и для цикла

    Вы можете перебирать типы последовательностей Python, такие как список и строка, с помощью range() и цикл for.

    При переборе списка только с помощью цикла вы можете получить доступ только к элементам. Когда вы перебираете список только с помощью цикла, вы можете получить доступ только к его элементам, но когда вы используете range() вместе с циклом, вы можете получить доступ к порядковому номеру каждого элемента.

    Преимущество использования range() для итерации списка заключается в том, что он позволяет нам получить доступ к порядковому номеру каждого элемента. Используя порядковые номера, мы можем получить доступ, а также изменить элементы списка, если это необходимо.

    Пример

    Передать количество элементов списка в range() с помощью функции len() . range() будет использовать его как аргумент stop .

     list1 = ['Джесса', 'Эмма', 20, 30, 75,5]
    # перебираем список с помощью range()
    для i в диапазоне (len (list1)):
        print(list1[i]) 

    Вывод :

     Джесса
    Эмма
    20
    30
    75.5 

    Практическая задача

    Распечатайте следующий числовой шаблон, используя Python range()  и цикл.

     1
    2 2
    3 3 3 
    Показать решение
     для числа в диапазоне (4):
        для я в диапазоне (число):
            печать (число, конец = "")
        print() # новая строка после каждой строки для корректного отображения шаблона
     

    Подробнее :

    • Python для цикла и диапазона() Упражнение

    Обратный диапазон

    Вы можете отобразить последовательность чисел, созданную функцией range() , в порядке убывания или в обратном порядке.

    Вы можете использовать следующие два способа, чтобы получить обратный диапазон чисел в Python.

    • Использовать отрицательное значение шага
    • Использовать функцию reversed()

    Использовать отрицательное значение шага

    Использовать отрицательное значение шага в функции range() для генерации последовательности чисел в обратном порядке . Например, range(5, -,1, -1) выдаст такие числа, как 5, 4, 3, 2 и 1.

    Т.е., вы можете обратить цикл, установив аргумент шага диапазона ( ) до -1. Это вызовет для цикл для итерации в обратном порядке.

    Давайте посмотрим, как зациклить обратную итерацию или обратную итерацию, чтобы отобразить диапазон чисел от 5 до 0.

     # обратный диапазон с использованием отрицательного шага
    # начало = 5
    # стоп = -1
    # шаг = -1
    для i в диапазоне (5, -1, -1):
        print(i) 

    Вывод :

     5
    4
    3
    2
    1
    0 

    Использование функции reversed()

    Используя встроенную в Python функцию reversed() , вы можете обратить любую последовательность, такую ​​как список или диапазон.

    • Передать range() в качестве входных данных для функции reversed(). Она возвращает range_iterator , который обращается к последовательности чисел, предоставленной range() , в обратном порядке.
    • Затем повторите результат, предоставленный функцией reversed() , используя цикл for.

    Пример 2 : обратный диапазон, начиная с 20 до 10

     для i в обратном порядке (диапазон (10, 21)):
        напечатать (я, конец = '')
    # Выход 19 18 17 16 15 14 13 12 11 10 

    Пример 3 : обратный диапазон, начиная с 20 до 10 с шагом 2

     для i в обратном порядке (диапазон (10, 21, 2)):
        напечатать (я, конец = '')
    # Вывод 20 18 16 14 12 10 

    Примечание : reverse(range(n)) возвращает range_iterator , который обращается к последовательности чисел, предоставленной range() в обратном порядке.

     печать (тип (диапазон (0, 5)))
    # Вывод <класс 'диапазон'>
    печать (тип (обратный (диапазон (0, 5))))
    # Вывод <класс 'range_iterator'> 

    Кроме того, если вам нужен список из него, вам нужно преобразовать вывод функции reversed() в список. Таким образом, вы можете получить обратный список диапазонов.

    Используйте range() для обращения списка

    Используйте range() для обращения списка путем передачи количества элементов списка в качестве начального аргумента и шага в качестве -1.

    Давайте рассмотрим различные способы инвертирования списка чисел с помощью range()

     list1 = [10, 20, 30, 40, 50]
    # start = размер списка
    # стоп = -1
    # шаг = -1
    # перевернуть список
    для i в диапазоне (len (list1) - 1, -1, -1):
        печать (список1 [я], конец = " ")
    # Выход 50 40 30 20 10
     

    Шаг диапазона Python

    Шаг — это необязательный аргумент range(). Это целое число, определяющее приращение между каждым числом в последовательности. т. е. указывает приращение.

    Вы также можете определить его как разницу между каждым предыдущим и последующим числом в результирующей последовательности. Например, если шаг равен 2, то разница между каждым предыдущим и последующим числом составляет 2

    Значение шага по умолчанию равно 1, если не указано явно.

    Пример: Увеличение с использованием шага

     # шаг range() со значением по умолчанию
    для я в диапазоне (10):
        напечатать (я, конец = '')
    # Выход 0 1 2 3 4 5 6 7 8 9
    # Увеличение диапазона() с шагом = 2
    # напечатать таблицу из 2, используя range()
    для я в диапазоне (2, 22, 2):
        напечатать (я, конец = '')
    # Выход 2 4 6 8 10 12 14 16 18 20
     

    Вы также можете выполнять множество операций, используя аргументы шага, такие как обращение последовательности, такой как список и строка.

    Уменьшение диапазона() с использованием шага

    Вы можете уменьшить range(), используя отрицательное значение шага .

    Когда мы устанавливаем отрицательное значение шага, на каждой итерации число будет уменьшаться, пока не достигнет конечного числа.

     # Уменьшение диапазона() с помощью шага
    # старт = 30, стоп = 20
    # шаг = -2
    для i в диапазоне (30, 20, -2):
        напечатать (я, конец = '')
    # Выход 30 28 26 24 22
     

    Примечание : Чтобы уменьшить range() , start должен быть больше stop . Range() возвращает пустую последовательность, если start < stop .

     для i в диапазоне (20, 30, -2):
        print(i, end=' ') 

    Кроме того, вы можете использовать шаг для создания последовательности чисел, кратных n.

     # Генерировать целые числа, умноженные на 7
    для i в диапазоне (7, 77, 7):
        напечатать (я, конец = '')
    # Вывод 7 14 21 28 35 42 49 56 63 70 

    Кроме того, вы получите valueerror , если вы установите step = 0 .

     для i в диапазоне (1, 5, 0):
        напечатать (я, конец = '')
    # Output ValueError: range() arg 3 не должен быть равен нулю
     

    Также нельзя использовать десятичное значение шаг . Если вы хотите использовать шаг с плавающей/десятичной дробью в range() , см. раздел Создание диапазона чисел с плавающей запятой.

    Отрицательный диапазон() в Python

    Вы можете использовать отрицательные целые числа в диапазоне().

    В большинстве случаев мы используем отрицательное значение шага для обращения диапазона. Но помимо шага мы можем использовать отрицательные значения в двух других аргументах (начало и конец) функции range().

    Пример: Отрицательный диапазон от -1 до -10

    Давайте рассмотрим пример для печати диапазона чисел от отрицательного до положительного.

     # отрицательный диапазон от -1 до -10
    для i в диапазоне (-1, -11, -1):
        напечатать (я, конец = ', ')
    # Вывод -1, -2, -3, -4, -5, -6, -7, -8, -9, -10 

    Разбираемся в программе выше, устанавливаем –

    • start = -1 (потому что мы хотели начать генерировать числа с -1)
    • stop = -11 (Мы хотим прекратить генерировать числа, когда достигнем -11)
    • step = -1

    Execution :

    • In the 1st iteration of the loop, i is -1
    • In the 2nd iteration of for loop, i is -2 because -1+(-1) = -2 , и этот процесс будет повторяться до конечного числа.

    Пример: Негативный реверс, диапазон от -10 до -1

    Вы также можете напечатать негативный реверс range() , используя позитив , шаг целое число.

     # отрицательный диапазон от -10 до -1
    # начало = -10
    # стоп = 0
    # шаг = 1
    для я в диапазоне (-10, 0):
        напечатать (я, конец = ', ')
    # Выход -10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 

    Комбинация отрицательных и положительных чисел

     # stat = 2, стоп = -5, шаг = -1
    для i в диапазоне (2, -5, -1):
        распечатать (я, конец = ", ")
    # Вывод 2, 1, 0, -1, -2, -3, -4, 

    Преобразование диапазона() в список

    Функция Python range() не возвращает список тип. Он возвращает неизменяемую последовательность целых чисел.

    Мы можем преобразовать range() в список, используя конструктор list() .

    • Передайте функцию range() в качестве входных данных для конструктора списка.
    • Конструктор list() автоматически создает список, заключая целые числа, возвращаемые функцией range() , в квадратные скобки.
     # создать список из диапазона()
    образец_список = список (диапазон (2, 10, 2))
    печать (тип (sample_list))
    # Вывод <класс 'список'>
    # показать список
    печать (sample_list)
    # Вывод [2, 4, 6, 8]
    # итерировать список
    для элемента в sample_list:
        печать (элемент)
     

    Доступ и изменение элемента списка с помощью range()

    Кроме того, вы можете использовать range() для доступа и изменения списка элементов.

    • Используя функцию len() , вы можете получить количество элементов списка.
    • Затем используйте этот счетчик в качестве номера остановки в range() и повторите цикл stop-1 раз.
    • На каждой итерации вы получаете порядковый номер текущего элемента списка.
     # создать список из диапазона()
    образец_список = список (диапазон (10, 100, 10))
    # перебирать и изменять элемент списка, используя range()
    # удвоить каждый номер списка
    # start = 0, stop = размер списка, step = 1
    для i в диапазоне (0, len (sample_list), 1):
        список_образцов[i] = список_образцов[i] * 2
    # отображаем обновленный список
    печать (sample_list)
    # Output [20, 40, 60, 80, 100, 120, 140, 160, 180] 

    Инклюзивный диапазон

    В этом разделе мы узнаем, как создать инклюзивный диапазон в Python. По умолчанию диапазон (n) является эксклюзивным, поэтому в результат не включается последнее число. Он создает последовательность чисел от start до stop -1 .

    Например, диапазон (5) даст [0, 1, 2, 3, 4] . Результат содержит числа от 0 до 5, но не пять.

    Если вы заметили, результат содержит 5 элементов , что равно len(range(0, 5)) . Обратите внимание, индекс всегда начинается с 0, а не с 1.

    Если вы хотите включить в результат конечное число, т.е. если вы хотите создать инклюзивный диапазон, то установить значение аргумента остановки как стоп+шаг .

    Пример

     # включая диапазон
    начало = 1
    стоп = 5
    шаг = 1
    # изменить остановку
    стоп += шаг
    для i в диапазоне (начало, стоп, шаг):
        напечатать (я, конец = '')
    # Выход 1 2 3 4 5
     

    Пример 2: Даже включающий диапазон()

     шаг = 2
    для i в диапазоне (2, 20 + шаг, шаг):
        напечатать (я, конец = '')
    # Вывод 2 4 6 8 10 12 14 16 18 20 

    range() против xrange() в Python 2

    Сравнение range() и xrange() актуально, только если вы используете Python 2 и Python 3. Если вы не используете Python 2, вы можете пропустить это сравнение .

    Функция range() работает по-разному в Python 3 и Python 2. Если ваше приложение работает как на Python 2, так и на Python 3, вы должны использовать range() вместо xrange() для лучшей совместимости кода.

    В Python 2 у нас есть range() и xrange() функции для создания последовательности чисел.

    В Python 3 xrange() переименован в range() , а исходная функция range() была удалена.

    Проще говоря, xrange() удален из Python 3, и мы можем использовать только функцию range() для получения чисел в заданном диапазоне.

    Использование range() и xrange()

    • В Python 2, range() возвращает объект list , т. е. генерирует все числа одновременно. Диапазон (1, 500) создаст список Python из 499 целых чисел в памяти. Таким образом, он потребляет много памяти и увеличивает время выполнения.
    • xrange() : Функция xrange(1, 500) не генерирует все числа сразу. Он производит числа одно за другим по мере того, как цикл переходит к следующему числу. Таким образом, он потребляет меньше памяти и ресурсов.

    Пример

     print 'Диапазон Python 2'
    диапазон печати(10)
    тип печати (диапазон (10))
    распечатать 'Python 2 xrange'
    для я в xrange (10):
        напечатать я
    тип печати (xrange (10)) 

    Вывод

     Диапазон Python 2 ()
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    введите «список»
    Python 2 xrange()
     0
     1
     2
     3
     4
     5
     6
     7
     8
     9
    введите 'xrange' 

    Объединение результатов двух range()

    Допустим, вы хотите добавить range(5) + range(10,15) . И вам нужен объединенный диапазон, например [0, 1, 2, 3, 4, 10, 11, 12, 13, 14] .

    Например, вы хотите сложить результат двух функций range() , чтобы получить другую последовательность чисел. Вы можете добавить/объединить результат нескольких функций range() , используя itertools.chin() .

     из цепочки импорта itertools
    # Объединение диапазонов
    новый_диапазон = цепочка (диапазон (5), диапазон (5, 10))
    для числа в новом_диапазоне:
        печать (число, конец = '')
    # Вывод 0 1 2 3 4 5 6 7 8 9 

    range() индексирование и нарезка

    Встроенная функция range() — это конструктор, который возвращает объект диапазона , к этому объекту диапазона также можно получить доступ по его порядковому номеру, используя индексирование и нарезку.

    Доступ к атрибутам range()

    Важно знать атрибуты range() , когда вы получаете их в качестве входных данных для своей функции, и вы хотите увидеть значение start , stop и шаг аргумент.

     диапазон1 = диапазон (0, 10)
    # доступ к атрибутам range()
    печать(диапазон1.начало) # 0
    печать(диапазон1. стоп) # 10
    print(range1.step) # 1 

    Индексирование

    range() поддерживает как положительные, так и отрицательные индексы. Пример ниже демонстрирует то же самое.

    В случае range() значение индекса начинается с нуля до (стоп). Например, если вы хотите получить доступ к третьему числу, нам нужно использовать 2 в качестве порядкового номера.

     диапазон1 = диапазон (0, 10)
    # первое число (начальный номер) в диапазоне
    печать (диапазон1 [0])
    # доступ к 5-му номеру в диапазоне
    печать (диапазон1 [5])
    # Выход 5
    # доступ к последнему номеру
    печать (диапазон1[диапазон1.stop - 1])
    # Выход 9

    Отрицательная индексация

    Доступ к номерам осуществляется справа налево при использовании отрицательной индексации.

     # отрицательная индексация
    # доступ к последнему номеру
    печать (диапазон (10) [-1])
    # Выход 9
    # доступ к предпоследнему номеру
    печать (диапазон (10) [-2])
    # Output 8 

    Slicing

    Slicing a подразумевает доступ к части из range()

     # slicing
    для я в диапазоне (10) [3: 8]:
        напечатать (я, конец = '')
    # вывод 3 4 5 6 7 

    range() вместо символа или алфавита

    Есть ли способ напечатать диапазон символов или алфавитов? Например вот так.

     для символов в диапазоне ('a','z'):
        print(char) 

    Есть ли способ напечатать диапазон символов или алфавитов? Например вот так. Можно создать диапазон символов с помощью пользовательского генератора. Давайте посмотрим, как сгенерировать алфавит от «a» до «z», используя пользовательскую функцию range() .

    Примечание : нам нужно использовать значение ASCII, а затем преобразовать значение ASCII в букву, используя Функция Chr() .

     # диапазон от 'a' до 'z
    def character_range (char1, char2):
        для char в диапазоне (ord (char1), ord (char2) + 1):
            выход (символ)
    для буквы в character_range('a', 'z'):
        печать (chr (буква), конец = ', ')
     

    Выход

     a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v , w, x, y, z, 

    Резюме

    Я хочу услышать от вас. Что вы думаете об этом руководстве по Python range()? Дайте мне знать, оставив комментарий ниже.

    Также попробуйте решить упражнение с циклом в Python и викторину с циклом for.

    Ниже приведен сводка всех операций, которые мы усвоили на этом уроке

    Операция Описание
    .
    диапазон(начало, стоп) Генерация последовательности целых чисел от начала до конца-1
    диапазон(начало, стоп, шаг) Сгенерировать последовательность целых чисел, начиная с начального номера, увеличивая шаг за шагом и останавливаясь перед конечным номером. То есть каждое следующее число генерируется путем добавления значения шага к предыдущему числу.
    range(5, -1, -1) Reverse range
    reversed(range(5)) Reverse range using a reversed() function
    диапазон (-1, -11, -1) Отрицательный диапазон от -1 до -10
    список(диапазон(2, 10, 2)) Преобразовать диапазон() в список
    диапазон(старт) ) Создание инклюзивного диапазона
    диапазон(0, 10)[5] Доступ к пятому номеру диапазона () напрямую
    3 904[1004] Разрезать диапазон для доступа к номерам от индекса 3 до 8
    range. start Get the start value of a range()
    range.stop Get the stop value of a range()
    range .step Получить значение шага range()
    Использование Python range()

    Часто задаваемые вопросы

    Начинается ли range() в Python с 0?

    range() по умолчанию начинается с 0, а не с 1, если начальный аргумент не указан. Например, range(5) вернет 0, 1, 2, 3, 4.

    Что возвращает range() в Python?

    Функция range() возвращает объект класса range , который представляет собой не что иное, как серию целых чисел.

    Является ли диапазон списком в Python?

    range() не является списком и не возвращает тип списка.

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *