در این مقاله از سری مقالات آموزش پایتون مجله پی استور در مورد تابع range در پایتون صحبت خواهیم کرد. تابع range در پایتون یکی از ابزارهای پرکاربرد برای تولید دنبالهای از اعداد است که معمولاً در حلقهها و عملیات تکرار استفاده میشود. این تابع به شما اجازه میدهد تا بهسادگی یک سری از اعداد متوالی را تولید کنید، بدون اینکه نیازی به تعریف دستی یا نوشتن چند تکه کد اضافی باشد. تابع range میتواند با یک مقدار شروع، مقدار پایان، و گام دلخواه تنظیم شود و این انعطافپذیری آن را به گزینهای ایدهآل برای بسیاری از کاربردها تبدیل میکند.
تابع Range در پایتون چیست؟
تابع range در پایتون، دنبالهای «Sequence» از اعداد را بازمیگرداند که از صفر شروع میشوند. گامهای حرکت در تابع Range پایتون به طور پیشفرض یکبهیک پیش میروند و بازه انتهایی دنباله شامل عدد توقف نمیشود. از این تابع میتوان برای تکرار در لیستها، تولید ایندکسها، یا ایجاد دنبالههای عددی با فواصل مشخص استفاده کرد. مقادیر تولیدشده توسط تابع range معمولاً به صورت یک دنباله در دسترس قرار میگیرند که میتوان آنها را به کمک یک حلقه پیمایش کرد یا به یک لیست تبدیل کرد.
ساده بودن و عملکرد بهینه این تابع باعث شده که به یکی از ابزارهای پایهای در برنامهنویسی پایتون تبدیل شود. به اولین مثال از تابع range در پایتون توجه کنید:
در مثال دادهشده، ما اعداد را از ۰ تا ۴ چاپ میکنیم.
for i in range(5): print(i, end=" ") print()
خروجی:
۰ ۱ ۲ ۳ ۴
ساختار دستوری تابع range در پایتون
به طور کلی نحو یا Syntax تابع range در پایتون با ساختار range(start, stop, step) مشخص میشود. سه پارامتر موجود در تابع range به صورت زیر است:
- start : [اختیاری] مقدار شروع دنباله
- stop : مقدار بعد از مقدار پایانی دنباله
- step : [اختیاری] مقدار عدد صحیح که تفاوت بین هر دو عدد در دنباله را نشان میدهد
پیاده سازی تابع range در پایتون
به طور ساده، تابع ()range به کاربر این امکان را میدهد که یک دنباله از اعداد را در یک بازه مشخص ایجاد کند. بسته به تعداد آرگومانهایی که کاربر به تابع میدهد، میتواند تعیین کند که دنباله اعداد از کجا شروع و کجا تمام شود، همچنین میتواند تفاوت بین هر عدد و عدد بعدی را مشخص کند. تابع ()range در پایتون میتواند به سه روش مختلف مقداردهی شود:
- range(stop) که یک آرگومان میگیرد.
- range(start, stop) که دو آرگومان میگیرد.
- range(start, stop, step) که سه آرگومان میگیرد.
پیاده سازی تابع range با یک پارامتر در پایتون
زمانی که کاربر تابع ()range را با یک آرگومان فراخوانی میکند، یک دنباله از اعداد به دست میآید که از ۰ شروع شده و شامل تمام اعداد صحیح تا عددی است که کاربر بهعنوان stop مشخص کرده، ولی خود آن عدد در دنباله گنجانده نمیشود.
در این مثال، ما اعداد را از ۰ تا ۵ چاپ میکنیم. در اینجا از تابع range استفاده کردهایم که در آن مقدار توقف حلقه را به عنوان پارامتر وارد میکنیم.
# printing first 6 # whole number for i in range(6): print(i, end=" ") print()
خروجی:
۰ ۱ ۲ ۳ ۴ ۵
پیاده سازی تابع range با دو پارامتر در پایتون
زمانی که کاربر تابع ()range را با دو پارامتر فراخوانی میکند، کاربر میتواند نه تنها مکان توقف دنباله اعداد را تعیین کند، بلکه جایی که دنباله شروع میشود را نیز مشخص کند، بنابراین نیازی نیست که همیشه از ۰ شروع شود. کاربران میتوانند از ()range برای تولید دنبالهای از اعداد از X تا Y با استفاده از range(X, Y) استفاده کنند.
در این مثال، ما اعداد را از ۵ تا ۱۹ چاپ میکنیم. در اینجا از تابع range استفاده کردهایم که در آن نقاط شروع و توقف حلقه را بهعنوان پارامتر وارد میکنیم.
# printing a natural # number from 5 to 20 for i in range(5, 20): print(i, end=" ")
خروجی:
۵ ۶ ۷ ۸ ۹ ۱۰ ۱۱ ۱۲ ۱۳ ۱۴ ۱۵ ۱۶ ۱۷ ۱۸ ۱۹
پیاده سازی تابع range با سه پارامتر در پایتون
زمانی که کاربر تابع ()range را با سه پارامتر فراخوانی میکند، کاربر میتواند نه تنها مکان شروع و توقف دنباله اعداد را تعیین کند، بلکه میتواند تفاوت بین هر عدد و عدد بعدی را نیز مشخص کند. اگر کاربر مقداری برای step وارد نکند، تابع ()range بهطور پیشفرض رفتار میکند که گویی مقدار step برابر ۱ است. در این مثال، ما اعداد زوج بین ۰ و ۱۰ را چاپ میکنیم، بنابراین نقطه شروع را از ۰ (start = 0) انتخاب میکنیم و دنباله را در ۱۰ متوقف میکنیم (stop = 10). برای چاپ اعداد زوج، تفاوت بین هر عدد و عدد بعدی باید ۲ باشد (step = 2). پس از ارائه مقدار step، خروجی بهصورت زیر خواهد بود: (۰، ۲، ۴، ۶).
در این مثال، ما اعداد را از ۰ تا ۹ با قدم ۲ چاپ میکنیم. در اینجا از تابع range استفاده کردهایم که در آن نقاط شروع و توقف حلقه به همراه گام یا فاصله بین هر عدد و عدد بعدی مشخص شده است.
for i in range(0, 10, 2): print(i, end=" ") print()
خروجی:
۰ ۲ ۴ ۶ ۸
استفاده از تابع range در پایتون
تابع range در پایتون برای ایجاد یک دنباله از اعداد استفاده میشود. این تابع معمولا در حلقههای for برای تکرار استفاده میشود. در ادامه میخواهیم با استفاده مثال و کدنویسی طرز استفاده از تابع range در پایتون را به شما عزیزان آموزش دهیم.
افزایش دنباله با استفاده از یک گام مثبت
اگر کاربر بخواهد دنباله را افزایش دهد، باید مقدار گام (step) یک عدد مثبت باشد.
# incremented by 4 for i in range(0, 30, 4): print(i, end=" ") print()
خروجی:
۰ ۴ ۸ ۱۲ ۱۶ ۲۰ ۲۴ ۲۸
استفاده از تابع range با گام منفی در پایتون
اگر کاربر بخواهد دنباله را کاهش دهد، باید مقدار گام (step) یک عدد منفی باشد.
# incremented by -2 for i in range(25, 2, -2): print(i, end=" ") print()
خروجی:
۲۵ ۲۳ ۲۱ ۱۹ ۱۷ ۱۵ ۱۳ ۱۱ ۹ ۷ ۵ ۳
استفاده از تابع range با مقادیر اعشاری در پایتون
تابع range در پایتون از اعداد اعشاری پشتیبانی نمیکند. به عبارت دیگر، کاربر نمیتواند از اعداد اعشاری یا اعداد غیرصحیح در هیچیک از آرگومانهای آن استفاده کند. تنها اعداد صحیح قابل استفاده هستند.
# using a float number for i in range(3.3): print(i)
خروجی:
for i in range(3.3): TypeError: 'float' object cannot be interpreted as an integer
اتصال دو تابع range با متد ()chain از ماژول itertools
نتایج دو تابع ()range میتوانند با استفاده از متد ()chain از ماژول itertools به هم متصل شوند. متد ()chain برای چاپ تمام مقادیر در اهداف قابل تکرار بهطور متوالی از پارامترهای آن استفاده میشود.
from itertools import chain # Using chain method print("Concatenating the result") res = chain(range(5), range(10, 20, 2)) for i in res: print(i, end=" ")
خروجی:
Concatenating the result ۰ ۱ ۲ ۳ ۴ ۱۰ ۱۲ ۱۴ ۱۶ ۱۸
دسترسی به تابع range با استفاده از مقدار اندیس
تابع ()range یک دنباله از اعداد بهعنوان شیء بازمیگرداند که میتوان آن را با استفاده از مقدار اندیس دسترسی پیدا کرد. شی بازگشتی از ()range از اندیسگذاری مثبت و منفی پشتیبانی میکند.
ele = range(10)[0] print("First element:", ele) ele = range(10)[-1] print("\nLast element:", ele) ele = range(10)[4] print("\nFifth element:", ele)
خروجی:
First element: 0 Last element: 9 Fifth element: 4
تابع range با لیست در پایتون
در این مثال، ما یک لیست ایجاد میکنیم و عناصر آن را با استفاده از تابع ()range در پایتون چاپ میکنیم.
fruits = ["apple", "banana", "cherry", "date"] for i in range(len(fruits)): print(fruits[i])
خروجی:
apple banana cherry date
نکات کلیدی درباره تابع range در پایتون
- تابع ()range تنها با اعداد صحیح (اعداد کامل) کار میکند.
- تمام پارامترها باید اعداد صحیح باشند. کاربران نمیتوانند رشته، عدد اعشاری یا هر نوع دیگری را در پارامترهای start، stop و step وارد کنند.
- تمامی سه پارامتر میتوانند مثبت یا منفی باشند.
- مقدار گام (step) نباید صفر باشد. اگر مقدار گام صفر باشد، پایتون یک استثنای ValueError را ایجاد میکند.
- ()range یک نوع داده در پایتون است.
- کاربران میتوانند آیتمهای موجود در ()range را با استفاده از اندیس دسترسی پیدا کنند، همانطور که در لیستها این کار را انجام میدهند.
نتیجه گیری
تابع range در پایتون برای ایجاد دنبالهای از اعداد استفاده میشود که معمولاً در حلقههای for به کار میرود. این تابع بهویژه زمانی مفید است که بخواهید یک سری اعداد را در یک بازه مشخص تولید کرده و روی آنها عملیات خاصی انجام دهید. تابع range سه پارامتر اصلی دارد: شروع دنباله، پایان دنباله و گام تغییرات عددی. پارامتر اول، شروع دنباله را مشخص میکند که عددی است که دنباله از آن آغاز میشود. پارامتر دوم، پایان دنباله را تعیین میکند و دقت کنید که این عدد شامل نخواهد شد. پارامتر سوم، گام تغییرات عددی است که بهطور پیشفرض برابر با ۱ است و میتوانید آن را برای تغییر گام دنباله تنظیم کنید.
یکی از ویژگیهای مهم تابع range این است که بسیار کارآمد است و از حافظه بهطور بهینه استفاده میکند. به جای ذخیره تمام اعداد در حافظه، این تابع فقط مقادیری را که نیاز دارید تولید میکند. به همین دلیل، زمانی که با دنبالههای طولانی کار میکنید، تابع range میتواند بهطور قابل توجهی مصرف حافظه را کاهش دهد. به طور کلی، این ابزار برای تولید اعداد در بازههای مشخص و استفاده در حلقههای تکرار بسیار مفید و موثر است.
خیلی مفید ساده و روان توضیح دادید
یک دنیا سپاس
بسیار رسا و جامع بود، کلی به اطلاعاتم اضافه شد
جز اون دسته سایت هایی هستین که انگیزه برای یادگرفتن مطالب بیشتر رو در وجود کاربر افزایش میدین🙏
از ابتدای مقاله که میخوندم در نظر داشتم سوال بپرسم ولی تا انتهای مقاله تمام ابهامات یادگیری برطرف شد، تشکر از تیم زحمت کش شما
چجوری میتونم به صورت حرفه ای پایتون کار کنم؟