تبلیغات
تبلیغات

آموزش تابع range در پایتون (بازه)

range در لغت به معنای دامنه، محدوده و در کل یک بازه است؛ که حتی در فارسی محاوره‌ای نیز بعضا مورد استفاده قرار می‌گیرد. حال در پایتون، تابعی به نام range وجود دارد که به کمک آن می‌توان بازه‌ای از اعداد را در نظر گرفت (که آبجکتی از کلاس Range خواهد بود) و سپس از آن در موارد مختلفی مثل حلقه‌ی for استفاده کرد.

بیایید یک بازه از 0 تا 10 ایجاد کنیم:

<class ‘range’>
range(0, 10)

ابتدای این بازه را 0 و انتهای آن را 10 در نظر گرفتیم که البته خود 10 شامل نمی‌شود. همچنین مقدار step یا گا‌م‌های این بازه، به‌صورت پیشفرض برابر 1 است که در ادامه با روند تغییر آن آشنا خواهیم شد. حالا از بازه‌ی ایجاد شده در مثال بالا، انتظار می‌رود که اعداد 0, 1, 2, 3, 4, 5, 6, 7, 8 و 9 را شامل شود. اما با چاپ آن، خود range(0, 10) را مشاهده می‌کنیم! پس چرا اعداد داخلش را نمایش نمی‌دهد؟!

بدیهی است! چراکه range، یک بازه بوده و یک لیستی از اعداد ایجاد شده نیست! این بدان معنیست که این آبجکت، شامل هیچ آیتمی نمی‌باشد و فقط محدوده‌ای را در نظر می‌گیرد.

ایجاد یک لیست در یک range

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

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100]

بنابراین، تابع list می‌تواند با دریافت یک range، اعداد آن بازه را ایجاد کرده و درون خود نگهداری کند. همچنین از آنجایی که انتهای بازه، در خود بازه قرار نمی‌گیرد، بنابراین آن را 101 در نظر گرفتیم.

تغییر گام‌های بازه

گام‌های اعداد ایجاد شده در بازه‌های قبلی، برابر 1 است. یعنی وقتی مثلا ابتدای بازه را 1 و انتهای آن را 10 در نظر بگیریم، این بازه یک دامنه‌ای از 0 تا 10 را در نظر خواهد گرفت که اعداد بین آن به طول 1 از یکدیگر فاصله دارند. همچنین عدد انتهای بازه شامل خود بازه نخواهد بود؛ پس این بازه، از 0 تا خود 9 خواهد بود که با توجه به اینکه گام آن برابر 1 است، 10 عدد را در نظر می‌گیرد.

حالا برای تغییر گام، کافیست تا ورودی سوم را در هنگام ایجاد آبجکتی از تابع range، به آن ارسال کنیم. به‌صورت زیر:

[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100]

همانطور که می‌بینید، بازه از 0 تا 101 و با گام‌های 2 در نظر گرفته شده است؛ با تبدیل این بازه به لیست، اعداد آن را مشاهده می‌کنیم که از 0 تا 100 بوده و هرکدام، دو تا از هم فاصله دارند.

حالا به نظرتان ایجاد اعداد زوج و منفی با استفاده range در یک دامنه‌ی خاص راحت نیست؟!

range فقط با یک ورودی

این تابع، قادر به دریافت فقط یک ورودی نیز می‌باشد؛ که در اینصورت، ورودی ارسال شده برابر انتهای بازه بوده و ابتدای بازه بصورت پیشفرض برابر 0 و تعداد گام‌ها نیز بصورت پیشفرض برابر 1 خواهد شد. در مثال زیر، یک ورودی به تابع range ارسال شده و همچنین کد نیز ساده‌تر شده است:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]

بازه‌ی معکوس

در کدهای بالا، دامنه از عددی کوچک به عددی بزرگ در نظر گرفته میشد. اما می‌توان دامنه را از عددی بزرگ به عددی کوچک نیز در نظر گرفت! به چه صورت؟! به مثال زیر توجه کنید:

[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

ابتدای بازه، 10 و انتهای بازه، 0 در نظر گرفته شده است؛ از آنجایی که گام‌ها به‌صورت پیشفرض برابر 1 است؛ بنابراین بایستی آن را به مقداری تبدیل کرد که بازه بتواند به‌صورت معکوس ایجاد شود! برای همین، کافیست یک منفی در کنار گام مورد نظر قرار داد.

استفاده در حلقه

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

0
1
2
3
4
5
6
7
8
9

اگر با زبان‌‌های برنامه‌نویسی دیگر کار کرده باشید، احتمالا برایتان استفاده از range در اینجا جالب است! مقدار i هربار برابر با مقدار جدید بازه خواهد بود. می‌توانستیم آن را به یک لیست نیز تبدیل کنیم؛ اما در این صورت، یک لیست با 10 آیتم در اختیار داشتیم که بهینه بودن کد را پایین می‌آورد؛ در حالی که range، شامل هیچ آیتمی نبوده و تنها یک بازه را تعریف می‌کند.

کانال تلگرام فول کده
تبلیغات

درباره نویسنده

هادی اکبرزاده

[ مدیر فول کده ]

علاقه‌مند به اشتراک‌گذاری اطلاعات در هر زمینه‌ای
برنامه‌نویس فول استک

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

نظرات ثبت شده بدون دیدگاه