معرفی تابع range پایتون

تابع range یکی از توابع داخلی پایتون است که دنباله ای از اعداد ایجاد میکند که به صورت پیشفرض از عدد صفر شروع شده و در هر مرحله یک به یک بیشتر میشود و قبل از یک عدد مشخص متوقف میشود. دنباله ای که تابع range ایجاد میکند تغییر ناپذیر(immutable) است. مقداری که تابع range پایتون برمیگرداند یک آبجکت قابل پیمایش از کلاس range است که میتواند داخل حلقه ها مورد استفاده قرار گیرد.

 

سینتکس range به شکل زیر است:

range(start, stop, step)

 

 

پارامترهای range

  • start(اختیاری): عددی که برای شمارش استفاده میشود. به صورت پیشفرض 0 میباشد.
  • stop: عددی که شمارش در آن باید توقف کند.
  • step(اختیاری): عددی که شمارش باید به عنوان پرش استفاده کند.

 

در پارامترهایی که میتوانید به تابع range ارسال کنید، فقط stop اجباری است. در صورتی که فقط یک پارامتر ارسال کنید دنباله ای از اعداد خواهید داشت که از صفر شروع شده و تا قبل از عدد stop ادامه خواهد داشت. دقت کنید که عدد stop شامل نبوده و در دنباله وجود نخواهد داشت. به مثال زیر دقت کنید:

>>> range(5)
range(0, 5)

 

همانطور که در کد بالا مشاهده میکنید، اگر بصورت مستقیم از range استفاده کنید فقط یک آبجکت به شما برگشت داده میشود. اگر بخواهید به خود اعداد دسترسی پیدا کنید باید داخل این آبجکت پیمایش کنید. مثلا با استفاده از تابع list میتوانید یک آبجکت range را به لیست تبدیل کنید:

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

 

در مثال بالا از عدد 5 به عنوان پایان دنباله استفاده کردیم و دقت کنید که عدد 5 خودش شامل نبوده و در دنباله وجود ندارد.

 

مثال از تابع range

برای ایجاد کردن یک رِنج یا بازه از اعداد با تابع range روش های مختلفی وجود دارد. روش اول اینست فقط پارامتر stop را ارسال کنید که در اینصورت دنباله از عدد صفر شروع شده و تا قبل از stop ادامه خواهد داشت:

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

 

روش بعدی اینست که در کنار stop پارامتر start را نیز ارسال کنید تا شروع دنباله با عددی غیر از صفر باشد. مثلا در کد زیر دنباله ای ایجاد کردیم که از عدد 3 شروع میشود. دقت کنید که مقدار start شامل بوده و دنباله وجود دارد اما مقدار stop شامل نبوده و در دنباله وجود ندارد :

>>> list( range(3, 9) )
[3, 4, 5, 6, 7, 8]

 

در مثال بعدی میتوانید پارامتر step را نیز ارسال کنید تا فاصله بین هر آیتم دنباله را نیز کنترل کنید. به صورت پیشفرض فاصله هر آیتم برابر 1 است یعنی اعداد یکی یکی افزایش پیدا میکنند. مثلا در کد زیر اعداد با فاصله 2 از یکدیگر ایجاد شده اند. باز هم دقت کنید که عدد 9 شامل نیست:

>>> list( range(3, 9, 2) )
[3, 5, 7]

 

خوشبختانه تابع range از اعداد منفی نیز پشتیبانی میکند:

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

 

ترفند های کار با range

در این بخش با نکاتی آشنا خواهید شد که بهروری شما در زمان کار با range را افزایش می دهند.  ترفند اول اینست که میتوانید از عملگر in برای بررسی اینکه آیا عدد خاصی در یک دنباله وجود دارد یا خیر استفاده کنید، همانطور که در زیر نشان داده شده است:

>>> num_range = range(5)

>>> 3 in num_range
True

>>> 6 in num_range
False

 

ترفند بعدی اینست که میتوانید شی range پایتون را به انواع قابل تکرار دیگر مانند لیست، تاپل و مجموعه تبدیل کرد:

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

>>> tuple( range(5) )
(0, 1, 2, 3, 4)

>>> set( range(5) )
{0, 1, 2, 3, 4}

 

همچنین میتوانید از عملگرهای == و != برای مقایسه range استفاده کنید و تعیین می کند که آنها دارای پارامترهای شروع، توقف و step یکسان هستند یا خیر:

num_range1 = range(1, 5) 
num_range2 = range(1, 10, 2) 
num_range3 = range(1, 5) 

>>> num_range1 == num_range2
False

>>> num_range1 == num_range3
True

 

تابع range به طور کلی با حلقه های for استفاده می شود، همانطور که در زیر نشان داده شده است:

for i in range(5):
	print(i)


# OUTPUT
0
1
2
3
4

 



0

Intro

10:38

رایگان

1

Variable

12:30

رایگان

2

String

19:22

رایگان

3

List

8:46

رایگان

4

While

9:6

رایگان

5

If

8:37

رایگان

6

For

6:12

رایگان

7

range

4:17

رایگان

8

break, continue, pass

9:15

رایگان

9

Function

12:32

رایگان

10

List methods

12:11

رایگان

11

Tuple

8:29

رایگان

12

Set

7:47

رایگان

13

Dictionary

9:19

رایگان

14

Module

10:40

رایگان

15

fstring

5:35

رایگان

16

format

7:34

رایگان

17

File

17:14

رایگان

18

Scope

6:25

رایگان

19

OOP

12:15

رایگان

20

Method

20:19

رایگان

21

class/instance variable

14:7

رایگان

22

class/static method

13:25

رایگان

23

Inheritance

17:6

رایگان

24

Special methods

9:50

رایگان

25

Access points

11:12

رایگان

26

property

6:54

رایگان

27

Exceptions

21:17

رایگان

28

Standard library

12:51

رایگان

29

Docstring

10:49

رایگان

30

Virtualenv

11:2

رایگان

دوره های پیشنهادی

دوره آموزش هوش مصنوعی مولد با pytorch پایتون
دوره آموزش ساخت Forum با فلسک
دوره آموزش ساخت Forum با فلسک
تکمیل ضبط
امیرحسین بیگدلو
دوره آموزش سلری(celery)
دوره آموزش سلری(celery)
تکمیل ضبط
امیرحسین بیگدلو



ارسال نظر


سامان

1 سال قبل پاسخ به نظر

سلام خسته نباشید

چرا مثلا range(6)==range(6) میشه True ?
مگه دو تا ابجکت جدا نیستن ؟ تو کلاس ها وقتی دو ابجکت یکسان میسازیم وقتی مقایسه میکنیم False بر میگردونه

ارسال نظر



امیرحسین بیگدلو

1 سال قبل

سلام
این دو مقدار یکسانی رو برمیگردونن، دو تا مساوی هم فقط مقادیر رو بررسی میکنم. از کلمه کلیدی is برای مقایسه استفاده کنید و نتیجه رو ببینید

Mohammad Taha

2 سال قبل پاسخ به نظر

بینظیر بود از همه لحاظ، واقعا سبک آموزش شمارو خیلی میپسندم.

ارسال نظر



مونگارد